세션에서 사용자를 로그 아웃하는 Java 컨트롤러 서블릿을 만들려고합니다. 두 가지 방법, 하나는 sendRedirect를 사용하고 다른 하나는 RequestDispatcher라는 것을 알고 있습니다. 필자는 제한된 Java 지식으로 인해 sendRedirect를 사용해야하는 도메인 외부의 페이지로 보내려고합니다.sendRedirect not redirecting
그러나 오류 302가 발생하고 페이지가 리디렉션되지 않습니다. 자습서 버전을 시도하고 작동하지만, 내 서블릿 내에서 구현할 때, 그것은 나에게 오류를 반환하고 리디렉션하지 않습니다.
누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.
사용하는 코드는 다음과 같습니다. 내가 넷빈즈 템플릿을 사용하고 있습니다 :
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession(false);
if (session == null) {
System.out.println("Invalid");
response.sendRedirect("http://www.google.com");
return;
} else {
System.out.println("Invalidated");
session.invalidate();
response.sendRedirect("http://www.google.com");
return;
/*
String url = "/logout.jsp";
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(url);
rd.include(request, response);
*/
}
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet LogOut</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet LogOut at " + request.getContextPath() + "</h1>");
out.println("</body>");
out.println("</html>");
*/
} finally {
out.close();
}
}
편집 : 나는 <a href>
태그를 통해 서블릿을 호출하고 있습니다. 서블릿 이름은 LogOut.java입니다.
<div data-role="header" data-position="fixed">
<h1>Menu</h1>
<a href="LogOut" data-theme="i">Log Out</a>
</div>
doGet 및 doPost는 processRequest를 호출합니다.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
'302'은 오류가 아닙니다; 리디렉션하도록 브라우저에 알리는 상태 코드입니다. – skaffman
안녕하세요, 스카프 먼, 빠른 답장을 보내 주셔서 감사합니다. 나는 방화범을 통해 무엇을 찾았는지 인터넷 검색을 기반으로하므로 스스로 확신하지 못합니다. 그러나 브라우저가 방향을 바꾸지 못하게하는 요인은 무엇입니까? jsp 페이지에서 jQueryMobile을 사용했기 때문일 수 있습니까? – Rax