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);

        }

        ...

    }

}

 

728x90

+ Recent posts