解决浏览器缓存问题-过滤器方式
来源:互联网 发布:gta5pc男角色捏脸数据 编辑:程序博客网 时间:2024/06/08 19:26
解决浏览器缓存问题-过滤器方式
一、浏览器缓存机制:
二、具体代码实现:
a、xml部分:
<!-- 浏览器缓存解决方案过滤器 --><filter><filter-name>EmsCacheCleanFilter</filter-name><filter-class>com.snt.crm.web.filter.EmsCacheCleanFilter</filter-class></filter><filter-mapping><filter-name>EmsCacheCleanFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>b、filter过滤器部分:
package com.snt.crm.web.filter;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;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.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.snt.crm.common.utils.DateUtil;/** * @description: 专门用于解决浏览器访问的缓存问题 * @category 存在302问题 * @date 2016年8月8日 下午2:09:02 */public class EmsCacheCleanFilter implements Filter{private static Logger log = LoggerFactory.getLogger(EmsCacheCleanFilter.class);private static final String STATIC_TAIL = "__xxxx_t=";public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse)response;//1.获取request请求的url访问路径String reqeustURL = req.getRequestURL().toString();String queryStr = req.getQueryString();//2.通过给静态资源添加时间戳,去避免缓存问题//当访问的静态资源是以*.js,*.css,*.html结尾时才给其加上时间戳if(reqeustURL != null){if(checkURL(reqeustURL)){String newURL = null;//日期类型时间戳//String date = DateUtil.date2String(new Date(), "yyyyMMdd");//毫秒值风格时间戳String date = new Date().getTime()+"";//如果?后面有参数if(StringUtils.isNotBlank(queryStr) && queryStr.trim().indexOf(STATIC_TAIL)==-1){newURL = reqeustURL + "?" + queryStr + "&" + STATIC_TAIL + date;newURL = newURL.replaceAll("\\n\\r","");resp.setHeader("content-type", "text/application;charset=UTF-8");resp.sendRedirect(newURL);//request.getRequestDispatcher(newURL).forward(request, response);//return;}//如果?后面没有参数if(StringUtils.isBlank(queryStr)){newURL = reqeustURL + "?" + STATIC_TAIL + date;newURL = newURL.replaceAll("\\n\\r","");resp.setHeader("content-type", "text/application;charset=UTF-8");resp.sendRedirect(newURL);//request.getRequestDispatcher(newURL).forward(request, response);}}try {//只要请求url不为空放行chain.doFilter(request, response);} catch (Exception e) {log.info("[http请求出现异常,检查网络是否正常,或者再尝试一次!]--[zengwei]-[exception:]"+e);}}}/** * @description:判断url中是否包含这些后缀名 * @param url 访问的url路径 * @return */public Boolean checkURL(String url){String[] checks = {".js",".css",".html"};for (int i = 0; i < checks.length; i++) {if(url.endsWith(checks[i])){return true;}}return false;} /** * @description:解决302问题未解决) * @param * @param response */public void fixResponse(HttpServletResponse response){response.setCharacterEncoding("UTF-8");response.setHeader("content-type", "text/application;charset=UTF-8");response.setStatus(200);try {PrintWriter out = response.getWriter();out.write("<html lang='zh-CN'>"+ "<head><meta http-equiv='content-type' content='text/html;charset=UTF-8'/></head></html>");} catch (IOException e) {log.info("[浏览器或系统出现异常,请重新访问]-[zengwei]");}}public void init(FilterConfig fConfig) throws ServletException {}public void destroy() {}}
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!
0 0
- 解决浏览器缓存问题-过滤器方式
- 解决浏览器缓存问题
- 解决浏览器缓存问题
- 解决浏览器缓存问题
- 浏览器缓存问题的解决
- 解决IE9浏览器缓存问题
- IE浏览器发送get请求时的缓存问题的解决方式
- 解决浏览器缓存和中文乱码问题
- Ajax浏览器缓存问题的解决
- 使用时间戳解决浏览器缓存问题
- Ajax解决浏览器的缓存问题
- Ajax解决浏览器的缓存问题
- 使用时间戳解决浏览器缓存问题
- Java怎么解决浏览器的缓存问题
- Ajax解决浏览器的缓存问题
- Ajax解决浏览器的缓存问题
- Ajax解决浏览器的缓存问题
- 时间戳 解决浏览器缓存问题
- Maven+springMVC+mybatis+redis 项目搭建
- Apache windows安装
- Mybatis中视图的使用
- 【转】linux sudo命令
- UNIX多线程编程(1) 创建多线程
- 解决浏览器缓存问题-过滤器方式
- java正则表达式语法详解及其使用代码实例
- 运算符||和|
- kubernetes 1.5安装 Redis 3.2.6 Cluster StatefulSet
- 前后端分离的必要性
- java版+支付宝支付和微信支付(二)
- SecureCRT 上传下载文件
- 分数拆分
- spring-context入门配置详解