Ich versuche Servlets als Controller-Schicht und JSPs als Ansichtsschicht zu verwenden. Viele der Beispiele/Tutorials, die ich gelesen habe, deuten darauf hin, wie dies zu tun somehting:Servlets und JSP zusammen verwenden, was zu einer unerwarteten Schleife führt
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// add something for the JSP to work on
request.setAttribute("key", "value");
// show JSP
request.getRequestDispatcher("main.jsp")forward(request, response);
}
Dies funktioniert gut für das einfache Beispiel, aber wenn ich es Schritt nach oben (auch nur ein wenig):
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// add something for the JSP to work on
request.setAttribute("key", "value");
String pathInfo = request.getPathInfo();
if ((pathInfo != null) && (pathInfo.length() > 1)) {
// get everything after the '/'
pathInfo = pathInfo.subSequence(1, pathInfo.length()).toString();
if (pathInfo.equals("example")) {
request.getRequestDispatcher("alternate.jsp").forward(request, response);
}
}
// show JSP
request.getRequestDispatcher("main.jsp").forward(request, response);
}
Soweit ich sagen kann, was passiert ist, dass, wenn ich zum Beispiel gehe http://localhost/main/example es trifft das Servlet, zu wo es zu alternate.jsp, dann führt es das Servlet erneut aber diesmal anstelle der pathInfo Equaling "Beispiel "Es entspricht" alternate.jsp ", also fällt es in den main.jsp-Versand.
Wie kann ich verschiedene JSP-Dateien mit einer ähnlichen Logik wie oben ausführen lassen?
nur für eine gute Maßnahme der Zuordnung in der web.xml ist:
<servlet>
<servlet-name>Main</servlet-name>
<servlet-class>com.example.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/main/*</url-pattern>
</servlet-mapping>
Eh ... Ich denke, ich werde diese Frage massiv überarbeiten müssen, um die Antwort zu bekommen, die ich brauche. –
Ok, nachdem ich das Problem etwas eingegrenzt habe und noch ein paar Tests gemacht habe, habe ich mir eine bessere Frage einfallen lassen. http://stackoverflow.com/questions/1030302/how-can-i-map-a-root-servlet-so-that-other-scripts-are-still-runnable –