1.比如jsp页面经常用来显示servlet转发过来的动态数据,所以jsp页面默认没有必要让浏览器缓存的
(
1)禁止浏览器缓存所有动态页面的过滤器:
有 3 个 HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet中的示例代码如下:•response.setDateHeader("Expires",-1);•response.setHeader("Cache-Control","no-cache");•response.setHeader("Pragma","no-cache");
(2)并不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面的三个响应头。
(3)Expires数据头:值为GMT时间值,为-1指浏览器不要缓存页面
(4)Cache-Control响应头有两个常用值:
no-cache指浏览器不要缓存当前页面。max-age:xxx指浏览器缓存页面xxx秒。
2.Filter的写法
//控制浏览器不要缓存jsp
public class NoCacheFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
//
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
response.setDateHeader("expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
chain.doFilter(request,response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
3.web.xml文件的写法
<filter>
<filter-name>NoCacheFilter</filter-name>
<filter-class>cn.itcast.web.filter.example.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NoCacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>