用户注销之后,前进或者后退页面,让目标页面无缓存。
I.创建一个类BookStoreFilter implements Filter
,在web.xml中配置信息,信息如下:
<filter>
<filter-name>BookStoreFilter</filter-name>
<filter-class>cn.kgc.filter.BookStoreFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>BookStoreFilter</filter-name>
<!-- 禁止哪个jsp页面缓存,就写哪个,缓存全部页面会导致浏览器较慢,用户体验差 -->
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
BookStoreFilter类:
package cn.kgc.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class BookStoreFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse)response;
//resp.setHeader:发送一个报头,告诉浏览器当前页面不进行缓存,每次访问的时间必须从服务器上读取最新的数据
//no-cache:客户端每次请求时必须向服务器发送
//must-revalidate:作用与no-cache相同,但更严谨
//no-store:缓存将不存在response,包括header和body。
resp.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
// 本地无缓存,自动刷新页面
resp.setHeader("Pragma", "no-cache");
// Expires实体报头域给出响应过期的日期和时间,小于等于0表示当前页面立即过期,
// 为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0
resp.setDateHeader("Expires", 0);
chain.doFilter(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
相应的跳转页面做判断,如果session==null,则跳转到登陆页面