当前位置: 代码迷 >> J2EE >> 页面后退无法 sendRedirect,该怎么解决
  详细解决方案

页面后退无法 sendRedirect,该怎么解决

热度:183   发布时间:2016-04-22 02:05:53.0
页面后退无法 sendRedirect
用Filter做了个登陆验证的,所有JSP action 都能拦截下来,若不登陆都会转向login.jsp

Java code
public String logout() throws Exception {        HttpServletResponse response = ServletActionContext.getResponse();        response.setHeader("Cache-Control","no-cache");                 response.setDateHeader("Expires", 0);             response.setHeader("Buffe","True");             response.setHeader("ExpiresAbsolute","Now() - 1");        HttpSession session = ServletActionContext.getRequest().getSession();        session.removeAttribute("user");        session.removeAttribute("sessionKey");        session.invalidate();        return SUCCESS;}


Java code
if ( user == null) {            response.setHeader( "Pragma ", "No-cache ");               response.setHeader( "Cache-Control ", "no-cache ");               response.setDateHeader("Expires",0);                      System.out.println("没有登录");            response.sendRedirect(request.getContextPath()+"login.jsp");


现在有个问题: 当在 a.jsp 退出登陆后,注销 session ,跳到login.jsp ,再点 页面后退,
这时就回到 a.jsp(能打印“没有登陆”), 但sendRedirect 就不起作用了。a.jsp里有多个action与服务端交互,
都可进入if ( user == null){} 但就是不执行 sendRedirect。请问如何解决 若不登陆都跳向 login.jsp

response.setHeader缓存的办法依然不起作用,在页面<meta>的方法可以跳转,但要在所有页面标记<meta>太麻烦,何况禁用缓存读取页面不太有效率。

请问除禁用缓存的其他方法?

------解决方案--------------------
这个是被浏览器给缓存了,感觉不用meta没什么好办法吧,又不可能去更忙乱浏览器的缓存设置。
------解决方案--------------------
后退没有在服务器上处理,只是客户端浏览器的缓存。
  相关解决方案