서블릿을 컨트롤러 레이어로, JSP를 뷰 레이어로 사용하려고합니다. 내가 읽은 예/자습서의 대부분은이 같은 일을 somehting을 제안 :서블릿과 JSP를 함께 사용하면 예기치 않은 루프가 발생합니다.
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);
}
이 간단한 예를 들어 잘 작동하지만 (조금이라도)을 강화할 때
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);
}
내가 무슨 일이 일어나는지를 알 수있는 한, 예를 들어 http://localhost/main/example으로 가면 서블릿에 도달하여 alternate.jsp로 전달한 다음 다시 서블릿을 실행하지만 이번에는 pathInfo와 동일하게 "example "alternate.jsp"와 같아 지므로 main.jsp 디스패치로 넘어갑니다.
위와 유사한 로직을 사용하여 어떻게 다른 JSP 파일을 실행할 수 있습니까?
그냥 좋은 측정을위한 web.xml에 매핑은 다음과 같습니다 이상하게
<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>
어 ... 필자는 필자가 필요한 대답을 얻기 위해이 질문을 재 작업해야한다고 생각합니다. –
좋아, 문제를 더 좁히고 더 나은 테스트를 시도한 후에 더 좋은 질문이 떠오른다. http://stackoverflow.com/questions/1030302/how-can-i-map-a-root-servlet-so-that-other-scripts-are-still-runnable –