Filter应用之2-设置某些页面缓存或是不缓存
要想让所有浏览器不缓存页面,需要在每个jsp上加上:
<%
response.setHeader("expires","-1");
response.setHeader("pragma","no-cache");
response.setHeader("cache-control","no-cache");
%>
测试,新建一个cache.jsp: 加上了上边的三句话后,用IE查看缓存,没有cache.jsp的缓存。但是每个页面都加这这代码,有点麻烦,分析:可以通过一个过虑器,对所有*.jsp过虑,设置三个头,全部不缓存。这样就不需要再每个jsp页面都写上边的三个头了。
第一步:实现过虑器接口
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//转换
HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("expires","-1");
resp.setHeader("pragma","no-cache");
resp.setHeader("cache-control","no-cache");
//都放行
chain.doFilter(request, response);
}
第二步:配置过虑器,url-pattern=*.jsp
<!-- 控制缓存的Filter -->
<filter>
<filter-name>cache</filter-name>
<filter-class>com.lhy.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cache</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
第三步:设置对某些页面缓存N天
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//转换
HttpServletResponse resp = (HttpServletResponse)response;
//设置页面缓存时间
//日历
Calendar c = Calendar.getInstance();
//加2天
c.add(Calendar.DATE,2);
long time = c.getTimeInMillis();
resp.setDateHeader("expires", time);
// resp.setHeader("pragma","no-cache");
// resp.setHeader("cache-control","no-cache");
//都放行
chain.doFilter(request, resp);
}
注意:我用的myeclipse生成的jsp,head里有这几句话,如果是想要设置缓存几天,一定要去掉,否则设置无效。
<meta http-equiv="pragma" content="no-cache">:禁止浏览器从本地机的缓存中调阅页面内容
<meta http-equiv="cache-control" content="no-cache">:指定请求和响应遵循的缓存机制
<meta http-equiv="expires" content="0"> :指定网页在缓存中的过期时间,一旦网页过期,必须到服务器上重新调阅。
Filter应用之2-设置某些页面缓存或是不缓存的更多相关文章
- 转载:设置html页面不让浏览器缓存的方法
本文是转载文章,只是方便自己记录. 在html页面head标签之间添加以下标识可以避免大多数浏览器缓存: <meta http-equiv="Pragma" content= ...
- 设置html页面不被浏览器缓存
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" ...
- 关于api接口以及页面数据通信域名,缓存cdn设置优化
以B站为例: 主域名:www.bilibili.com 账户登录注册相关域名,包括app登录:passport.bilibili.com 静态资源css,js,img等相关域名:static.bili ...
- JSP 页面缓存以及清除缓存
一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存 ...
- SP 页面缓存以及清除缓存
JSP 页面缓存以及清除缓存 一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和 ...
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
缓存依赖数据库 第一步 1通过vs里面带的命令提示窗口. 2或者.NET Framework 版本 4(64 位系统)条件,%windir%\Microsoft.NET\Framework64\v4. ...
- Vue页面缓存和不缓存的方法
第一步 在app中设置需要缓存的div //缓存的页面 <keep-alive> <router-view v-if="$route.meta.keepAlive" ...
- MyBatis 延迟加载,一级缓存,二级缓存设置
什么是延迟加载 resultMap中的association和collection标签具有延迟加载的功能. 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息.使用关联信息时再去加载关联信息 ...
随机推荐
- 如何使用Java执行cmd命令
用JAVA代码实现执行CMD命令的方法! Runtime rt = Runtime.getRuntime(); Process p = rt.exec(String[] cmdarray); ...
- web service 项目 和 普通 web项目 的 区别
web service 面向的是开发者(需要再次开发) 普通web 面向的是用户(直接使用)
- pytest 常用命令行选项(一)
pytest有丰富的命令行选项,以满足不同的需要,下面对常用的命令行选项作下简单介绍. 上文已经使用过-v选项,还有很多选项,你可以使用pytest --help查看全部选项.如下图: 1.--co ...
- VCL消息处理机制
http://www.cnblogs.com/railgunman/archive/2010/12/10/1902524.html#2868236 说到VCL中的消息处理就不能不提到TApplicat ...
- 梯度下降VS随机梯度下降
样本个数m,x为n维向量.h_theta(x) = theta^t * x梯度下降需要把m个样本全部带入计算,迭代一次计算量为m*n^2 随机梯度下降每次只使用一个样本,迭代一次计算量为n^2,当m很 ...
- WPF 打印崩溃问题( 异常:Illegal characters in path/路径中有非法字符)
现象: 打印时候程序直接崩溃.调试时出现下列异常. 异常信息: 中文:System.ArgumentException : 路径中有非法字符. 英文: System.ArgumentException ...
- Spring Boot 应用系列 1 -- Spring Boot 2 整合Spring Data JPA和Druid,双数据源
最近Team开始尝试使用Spring Boot + Spring Data JPA作为数据层的解决方案,在网上逛了几圈之后发现大家并不待见JPA,理由是(1)MyBatis简单直观够用,(2)以Hib ...
- List泛型集合对象排序
本文的重点主要是解决:List<T>对象集合的排序功能. 一.List<T>.Sort 方法 () MSDN对这个无参Sort()方法的介绍:使用默认比较器对整个List< ...
- ASP.NET Core SignalR CORS 跨域问题
将 SignalR 集成到 ASP.NET Core api 程序的时候,按照官方 DEMO 配置完成,本地访问没有问题,但是发布之后一直报跨域问题,本地是这样设置的: 原始代码: services. ...
- JSON 数据转成Table
public static DataTable JsonToDataTable(string strJson) { //转换json格式 strJson = strJson.Replace(" ...