Filter 禁止浏览器缓存动态资源,例如JSP资源 -学习笔记

当访问一个web资源时,没有得到对应的结果,有可能是Filter没有放行资源
静态资源和动态资源进行不同的缓存处理,代码如下:====NO2判段是否以jsp结尾 处


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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//禁止浏览器缓存动态资源,例如JSP资源
public class FilterDemo5 implements Filter {

    //思路
    private FilterConfig filterConfig;
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }
    public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {

        //NO将父子接口强转
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        //NO1取得客户端访问的资源的URI,形式/day04/login.jsp
        //http:
        String uri = request.getRequestURI();

        //静态资源和动态资源进行不同的缓存处理,代码如下:
        //NO2判段是否以jsp结尾,即动态资源
        if(uri!=null && uri.endsWith("jsp")){
            //NO3如果是动态资源,设置三个响应头通知浏览器不缓存
            response.setHeader("expires","-1");
            response.setHeader("cache-control","no-cache");
            response.setHeader("pragma","no-cache");
        }else if(uri!=null && uri.endsWith("html")){
            //NO4如果是静态资源,缓存一定的时间
            String strHtml = filterConfig.getInitParameter("html");
            long time = System.currentTimeMillis()+Integer.parseInt(strHtml)*1000;
            //time为毫秒值
            response.setDateHeader("expires",time);
            response.setHeader("cache-control",time/1000+"");
            response.setHeader("pragma",time/1000+"");
        }

        //NO5放行资源
        chain.doFilter(request,response);
    }
    public void destroy() {
    }
}

原文地址:http://blog.51cto.com/357712148/2105116

时间: 2024-10-22 09:59:16

Filter 禁止浏览器缓存动态资源,例如JSP资源 -学习笔记的相关文章

使用Filter防止浏览器缓存页面或请求结果

只需要两步: 1.定义一个Filter: public class NoCacheFilter implements Filter{ @Override public void destroy(){ } @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException{ HttpServletRespons

filter 过滤器 禁止浏览器缓存

1 public class BrowserNoCacheFilter implements Filter { 2 public void init(FilterConfig filterconfig) throws ServletException { 3 } 4 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain) throws IOException,

【禁止缓存】如何禁止浏览器缓存页面内容

浏览器为了避免频繁地与服务器交互,提供了缓存功能.当频繁地访问同义jsp页面时,浏览器会将缓存中的结果取出为用户响应,并不向服务器发送请求,因此经常出现不能反映服务器最新处理结果的情况. 如果某个 jsp 或 servlet程序不需要客户浏览器缓存其相应内容,可以添加如下代码: response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-

php添加http头禁止浏览器缓存

在PHP中可以轻松的使用下面的语句实现禁止页面缓存,但比较难记特整理下,方便大家使用. 核心代码: 复制代码代码如下: header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-rev

【前端_js】Chrome禁止浏览器缓存

在前端开发中,浏览器缓存使得我们改了代码后页面不变,得经常手动清理缓存. 按如下操作即可禁用浏览器缓存: 原文地址:https://www.cnblogs.com/leiblog/p/10936421.html

PHP禁止浏览器缓存

一.对于静态页(就是通过meta标签来设置): <!--expires用于设定网页的过期时间,一旦过期就必须从服务器上重新加载.时间必须使用GMT格式--> <meta http-equiv="expires" content="0" /> 或者通过pragma no-cache来设置,pragma出现在http-equiv属性中,使用content属性的no-cache值表示是否缓存网页(为了提高速度一些浏览器会缓存浏览者浏览过的页面,通过

禁止浏览器缓存

HTML: <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-store, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 G

谷歌浏览器(Chrome)禁止浏览器缓存 设置

在开发项目期间用谷歌浏览器调试,他总是缓存我的css样式这个很气人啊,后经过摸索找到了方法,如下 先F12或者shift+ctrl+j 打开调试者工具,在找Network这个tab按钮,点击进入,勾选diasable cache选项就可以了. 原文地址:https://www.cnblogs.com/zc290987034/p/8365381.html

禁止浏览器缓存js

方法:在js文件后加上数学随机数; Math.random() 比如:源代码为 <script src="./js/lib/require/require.js" data-main="./js/modules/main/main"></script> 修改之后变成: <script> document.write('<script src="./js/lib/require/require.js"' +