1. 程式人生 > >Filter 禁止瀏覽器緩存動態資源,例如JSP資源 -學習筆記

Filter 禁止瀏覽器緩存動態資源,例如JSP資源 -學習筆記

Filter 禁止瀏覽器緩存動態資源例

當訪問一個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() {
    }
}

Filter 禁止瀏覽器緩存動態資源,例如JSP資源 -學習筆記