关于注销之后的浏览器缓存的解决问题

用户注销之后,前进或者后退页面,让目标页面无缓存。

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,则跳转到登陆页面

猜你喜欢

转载自blog.csdn.net/qq_26869339/article/details/82755544