用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没什么好办法吧,又不可能去更忙乱浏览器的缓存设置。
------解决方案--------------------
后退没有在服务器上处理,只是客户端浏览器的缓存。