【发布时间】:2014-05-21 21:14:54
【问题描述】:
考虑 servlet:
package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LogoutServlet
*/
@WebServlet("/loggingOut")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// Get the session
HttpSession session = request.getSession(false);
if(session != null){
System.out.println("Here ...");
session.invalidate();
// forwards to the page logout.jsp
request.getRequestDispatcher("/WEB-INF/results/logoutResult.jsp").forward(request, response);
// response.sendRedirect("./WEB-INF/results/logoutResult.jsp");
}
else
{
System.out.println("There ...");
// response.sendRedirect("error404.jsp");
request.getRequestDispatcher("./WEB-INF/results/error404.jsp").forward(request, response);
}
}
}
在我使会话无效并移动到 logoutResult.jsp 之后,如果我再次到达上述 servlet 则会话仍然“活动”,并且我没有到达 error404.jsp 的代码,即:
else
{
System.out.println("There ...");
// response.sendRedirect("error404.jsp");
request.getRequestDispatcher("./WEB-INF/results/error404.jsp").forward(request, response);
}
我该如何解决?
非常感谢
【问题讨论】:
-
因为您在使会话无效后将请求转发到该 jsp
-
它还没有活着。您有一个新会话。
-
您没有找到 error404.jsp 的代码,因为它在 WEB-INF 下。不要将 JSP 放在 WEB-INF 下。
标签: java jsp http session servlets