欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVAEE Filter 過濾器設置是否緩存實例詳解

 更新時間:2016年05月19日 11:07:14   作者:YX_blog  
網頁中,每次的客戶端訪問服務器,有部分不用重復請求的,這樣可以減輕服務器的工作量。那么如何設置客戶端是否都緩存呢?接下來通過本文給大家介紹JAVAEE Filter 過濾器設置是否緩存的實例,感興趣的朋友一起學習吧

在網頁中,每次的客戶端訪問服務器,有部分不用重復請求,如有些圖片,視頻等就沒有必要每次都請求,這樣會讓服務器增大工作量。為了防止這樣,我們采用過濾器來設置客戶端是都緩存。

頁面的緩存與不緩存設置及html頁面中meta的作用

HTTP1.1中啟用Cache-Control 來控制頁面的緩存與否,這里介紹幾個常用的參數:

no-cache,瀏覽器和緩存服務器都不應該緩存頁面信息;

public,瀏覽器和緩存服務器都可以緩存頁面信息;

no-store,請求和響應的信息都不應該被存儲在對方的磁盤系統(tǒng)中;

must-revalidate,對于客戶機的每次請求,代理服務器必須想服務器驗證緩存是否過時;

Last-Modified只頁面的最后生成時間,GMT格式;

Expires過時期限值,GMT格式,指瀏覽器或緩存服務器在該時間點后必須從真正的服務器中獲取新的頁面信息;

上面兩個值在JSP中設置值為字符型的GMT格式,無法生效,設置long類型才生效;

下面是設置不緩存的filter代碼:

<span style="font-size:24px;">package cn.hncu.filter; 
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; 
public class CacheFilter implements Filter { 
@Override 
public void destroy() { 
}</span> 
<span style="font-size:24px;"> 
@Override 
public void doFilter(ServletRequest request , ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
// 過濾器有很多作用,這個用來設置客戶端是否設置緩存的問題,我們這里采用response通知客戶端設置不緩存 
chain.doFilter(request, response); 
HttpServletResponse res=(HttpServletResponse) response; 
res.setHeader("expries", "-1"); 
res.setHeader("pragma", "no-cache"); 
res.setHeader("cache-control", "no-cache"); 
/*上面的已經可以設置不緩存,但是還可以設置全面一點: 
//不允許瀏覽器端或緩存服務器緩存當前頁面信息。 
/* response.setHeader( "Pragma", "no-cache" ); 
response.setDateHeader("Expires", "-1"); 
response.addHeader( "Cache-Control", "no-cache" );//瀏覽器和緩存服務器都不應該緩存頁面信息 
response.addHeader( "Cache-Control", "no-store" );//請求和響應的信息都不應該被存儲在對方的磁盤 response.addHeader( "Cache-Control", "must-revalidate" );*///于客戶機的每次請求,代理服務器必須想服務器驗證緩存是否過時; 
} 
@Override 
public void init(FilterConfig arg0) throws ServletException { 
} 
}</span><span style="font-size:18px;"> 
</span> 

下面是設置緩存的過濾器文件

package cn.hncu.filter; 
import java.io.IOException; 
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.HttpServletResponse; 
public class CacheFilter2 implements Filter { 
@Override 
public void destroy() { 
} 
@Override 
public void doFilter(ServletRequest request , ServletResponse response, 
FilterChain chain) throws IOException, ServletException { 
// 過濾器有很多作用,這個用來設置客戶端是否設置緩存的問題,我們這里采用response通知客戶端設置緩存 
//這里設置緩存1天,以實現讓圖片、視頻類的資源(在過濾器當中配置相應的攔截路徑)要求客戶瀏覽器緩存1天) 
//攔截路徑在web.xml中配置 
chain.doFilter(request, response);//先進行請求,返回也會從過這里,返回進行攔截 
HttpServletResponse res=(HttpServletResponse) response; 
Date d =new Date(); 
Long time=d.getTime()+60*60*24; 
// res.setHeader("expries", ""+time);//這樣就設置緩存一天 
res.setDateHeader("expries", time);//和上面一句一樣 
/* 
* Date date = new Date(); 
response.setDateHeader("Last-Modified",date.getTime()); //Last-Modified:頁面的最后生成時間 
response.setDateHeader("Expires",date.getTime()+60*60*24); //Expires:過時期限值 
response.setHeader("Cache-Control", "public"); //Cache-Control來控制頁面的緩存與否,public:瀏覽器和緩存服務器都可以緩存頁面信息; 
response.setHeader("Pragma", "Pragma"); //Pragma:設置頁面是否緩存,為Pragma則緩存,no-cache則不緩存 
*/ 
} 
@Override 
public void init(FilterConfig arg0) throws ServletException { 
}

需要注意:上面的filter文件生效需要在web.xml中配置,根據配置的路徑來進行過濾。

以上所述是小編給大家介紹的JAVAEE Filter 過濾器設置是否緩存實例詳解的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 使用@RequestParam 綁定List參數

    使用@RequestParam 綁定List參數

    這篇文章主要介紹了使用@RequestParam 綁定List參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java.nio.file.WatchService?實時監(jiān)控文件變化的示例代碼

    java.nio.file.WatchService?實時監(jiān)控文件變化的示例代碼

    在?Java?語言中,從?JDK7?開始,新增了java.nio.file.WatchService類,用來實時監(jiān)控文件的變化,這篇文章主要介紹了java.nio.file.WatchService?實時監(jiān)控文件變化,需要的朋友可以參考下
    2022-05-05
  • JDK12的新特性之CompactNumberFormat詳解

    JDK12的新特性之CompactNumberFormat詳解

    這篇文章主要介紹了JDK12的新特性之CompactNumberFormat,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Java實現Excel表單控件的添加與刪除

    Java實現Excel表單控件的添加與刪除

    本文通過Java代碼示例介紹如何在Excel表格中添加表單控件,包括文本框、單選按鈕、復選框、組合框、微調按鈕等,以及如何刪除Excel中的指定表單控件,需要的可以參考一下
    2022-05-05
  • 解決Spring Boot 在localhost域奇怪的404問題(Mac book pro)

    解決Spring Boot 在localhost域奇怪的404問題(Mac book pro)

    這篇文章主要介紹了解決Spring Boot 在localhost域奇怪的404問題(Mac book pro),需要的朋友可以參考下
    2017-09-09
  • java String 可變性的分析

    java String 可變性的分析

    這篇文章主要介紹了java String 可變性的分析的相關資料,通常大家都認為java String 是不可變的,這里分析下源碼來說明它的可變性,需要的朋友可以參考下
    2017-03-03
  • 一文讓你了解透徹Java中的IO模型

    一文讓你了解透徹Java中的IO模型

    本文只是說明了IO模型,讓你了解IO模型是什么,怎么區(qū)分IO模型,以及分析了Java中的三種IO模型,本文是純理論知識,看完之后會讓你對IO有更加深刻的理解,感興趣的同學可以參考一下
    2023-05-05
  • java如何獲得redis所有的key-value

    java如何獲得redis所有的key-value

    這篇文章主要介紹了java如何獲得redis所有的key-value,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解析SpringBoot中@Autowire注解的實現原理

    解析SpringBoot中@Autowire注解的實現原理

    在開發(fā)Java項目時,依賴注入是一種常見的實現方式,SpringBoot框架通過@Autowired注解來實現依賴注入的功能,本文將介紹SpringBoot中 Autowired注解實現的原理
    2023-06-06
  • Java數據結構與算法之棧(動力節(jié)點Java學院整理)

    Java數據結構與算法之棧(動力節(jié)點Java學院整理)

    這篇文章主要介紹了Java數據結構與算法之棧,棧是先進后出的數據的結構,本文通過文字說明與實例代碼相結合的形式給大家介紹的非常詳細,需要的朋友跟著小編一起學習吧
    2017-04-04

最新評論