Servlet을 사용하면서 발견한 어노테이션
@WebServlet() 사용시 주의사항이다.
서블릿(servlet) 만들고 jsp페이지 만든후 실행했으나 페이지가 안보이면서
왜 이러지 하다가 request에서 받아오는 url로그를 확인하고서야 발견한 문제인데
결론은
호출한 jsp 페이지 폴더 이름과 서블릿에서 사용한 어노테이션 폴더(?) 이름이 같으면 안된다는 것이다.
jsp페이지에서 /menu/test.do를 호출해서 서블릿 페이지로 맞게 왔지만
이동하려는 jsp페이지의 주소가 /menu/test.jsp라면
다시 서블릿을 호출하면서 페이지가 안보였다.(/menu 가 문제)
그래서 /menu_servlet/test.do를 호출하도록 변경했더니 문제가 없었다.
사용법>
@WebServlet("/menu_servlet/*")
// 잘못된 사용법
// 이렇게 사용하면 아래서 호출한 jsp 파일의 상위 폴더 이름과 같아서 한번더 호출하게 된다.
// @WebServlet("/menu/*") // 문제가 됨
public class MenuServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String url = request.getRequestURI().toString();
System.out.println("url: " + url); // url 확인
if (url.indexOf("test.do") != -1) {
String page = "/menu/test.jsp";
RequestDispatcher rd = request.getRequestDispatcher(page);
rd.forward(request, response);
}
...
}
}