使用后退/前进按钮将页面重定向到自定义页面而不是默认“网页已过期”

时间:2012-04-02 06:13:37

标签: jsp servlets

我忙于一个只有一个页面的网站,只有在登录后才能访问:home.jsp。一旦用户使用有效会话登录,如果他按下浏览器上的后退按钮,则应该将其重定向到login.jsp并再次按下浏览器的前进按钮。如果没有登录,他就无法前往home.jsp。所以在做了一些搜索之后,我已经实施了:

<%
response.setHeader ( "Cache-Control","no-cache,no-store,must-revalidate");

response.setHeader("Pragma","no-cache");

response.setDateHeader ( "Expires", 0)
%>

home.jsp页面上,按下前进按钮后,表示网页已过期,但我正在寻找的是我的cutom页面,类似sessionExpired.jsp说再次登录..

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

实施Post-Redirect-Get模式。因此,每当最终用户发送(成功)POST请求时,都会向目标页面发送重定向。这样,后退按钮将指向重定向的GET请求而不是POST请求(显然已经过期,因为您指示浏览器不对其进行缓存)。

E.g。在处理登录的doPost()方法中:

User user = userService.find(username, password);

if (user != null) {
    request.getSession().setAttribute("user", user);
    response.sendRedirect("nextpage.jsp"); // Here, you need to send a redirect to landing page after login.
}