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

spring使用ehcache實現(xiàn)頁面緩存示例

 更新時間:2017年02月22日 17:24:19   作者:ctxsdhy  
這篇文章主要介紹了spring使用ehcache實現(xiàn)頁面緩存示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

如果將應(yīng)用的結(jié)構(gòu)分為"page-filter-action-service-dao-db",那page層就是最接近用戶的一層,一些特定的頁面如果在這里做緩存,之后用戶的請求在filter就會結(jié)束了,不用再走后面的"action-service-dao-db",很大程度的節(jié)省了服務(wù)器的壓力,也加快了頁面響應(yīng)。

在系統(tǒng)中可以對一些訪問量特別大、數(shù)據(jù)更新較少的頁面設(shè)置頁面緩存,比如首頁、一些瀏覽頁和統(tǒng)計頁,設(shè)置成幾分鐘更新一次緩存。

spring的ehcache頁面緩存是用filter的原理實現(xiàn)的,ehcache-web包中的"SimplePageCachingFilter"過濾器提供了簡單的頁面緩存功能,如果有特殊需要我們也可以繼承這個類實現(xiàn)自己的過濾器。

下面舉栗子:

 一、添加jar包引用

修改pom.xml文件,加入:

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-web</artifactId>
  <version>2.0.4</version>
</dependency> 

二、修改配置文件

1、修改web.xml文件,加入兩個自己的filter:

<!-- 頁面緩存過濾器 -->
<!-- 添加緩存 -->
<filter>
  <filter-name>testPageAddCachingFilter</filter-name>
  <filter-class>org.xs.demo1.TestPageCachingFilter</filter-class>
  <init-param>
    <param-name>cacheName</param-name>
    <param-value>testPageCache</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>testPageAddCachingFilter</filter-name>
  <url-pattern>/hello/list</url-pattern>
  <url-pattern>/hello/list2</url-pattern>
  <url-pattern>/hello/view/*</url-pattern>
</filter-mapping>
<!-- 清除緩存 -->
<filter>
  <filter-name>testPageRemoveCachingFilter</filter-name>
  <filter-class>org.xs.demo1.TestPageRemoveCachingFilter</filter-class>
  <init-param>
    <param-name>cacheName</param-name>
    <param-value>testPageCache</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>testPageRemoveCachingFilter</filter-name>
  <url-pattern>/hello/update/*</url-pattern>
  <url-pattern>/hello/delete/*</url-pattern>
</filter-mapping>

2、修改ehcache-context.xml文件,加入"testPageCache"緩存實例名(一定要加,不然tomcat啟動時filter會報錯,提示找不到)

<cache name="testPageCache" 

  maxEntriesLocalHeap="10000"

  maxEntriesLocalDisk="100000"

  overflowToDisk="true"

  eternal="false"

  timeToIdleSeconds="300"

  timeToLiveSeconds="600"

/>

三、增加filter類

1、增加添加緩存過濾器

package org.xs.demo1;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter; 

public class TestPageCachingFilter extends SimplePageCachingFilter {  

  @Override

  protected CacheManager getCacheManager() {

    return ((CacheManager)ContextUtils.getBean("ehcacheManager"));

  }

} 

繼承SimplePageCachingFilter類的原因是要自己創(chuàng)建CacheManager,不然會是自動創(chuàng)建,默認會去根目錄找"ehcache.xml",和我們已有的配置不符。

2、增加清除緩存過濾器

package org.xs.demo1;

import java.io.IOException; 

import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse; 

import net.sf.ehcache.Ehcache; 

public class TestPageRemoveCachingFilter extends TestPageCachingFilter {   

  @Override

  protected void doFilter(final HttpServletRequest httpRequest, final HttpServletResponse httpResponse, final FilterChain chain) throws ServletException, IOException {

    Ehcache ehcache = getCacheManager().getEhcache(getCacheName());

    //清除緩存

    ehcache.removeAll();

    //請求繼續(xù)執(zhí)行

    chain.doFilter(httpRequest, httpResponse);

  }

}

四、運行測試

第一次訪問"http://localhost:8080/demo1/hello/list2"地址,會進入Controller中的斷點:

第二次訪問就不會進入斷點了,頁面瞬間加載好

點擊"刪除"按鈕,會進入TestPageRemoveCachingFilter過濾器的斷點:

之后再訪問list2又會重新進入Controller中的斷點

 

實例代碼地址:spring-ehcache_jb51.rar

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Struts2+uploadify多文件上傳實例

    Struts2+uploadify多文件上傳實例

    這篇文章主要為大家詳細介紹了Struts2+uploadify多文件上傳實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • SpringMVC使用@PathVariable接收參數(shù)過程解析

    SpringMVC使用@PathVariable接收參數(shù)過程解析

    這篇文章主要介紹了SpringMVC使用@PathVariable接收參數(shù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • springboot開發(fā)flowable定時任務(wù)問題

    springboot開發(fā)flowable定時任務(wù)問題

    這篇文章主要介紹了springboot開發(fā)flowable定時任務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 基于springboot bean的實例化過程和屬性注入過程

    基于springboot bean的實例化過程和屬性注入過程

    這篇文章主要介紹了基于springboot bean的實例化過程和屬性注入過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • JAVA使用quartz添加定時任務(wù),并依賴注入對象操作

    JAVA使用quartz添加定時任務(wù),并依賴注入對象操作

    這篇文章主要介紹了JAVA使用quartz添加定時任務(wù),并依賴注入對象操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 微信公眾號 網(wǎng)頁授權(quán)登錄及code been used解決詳解

    微信公眾號 網(wǎng)頁授權(quán)登錄及code been used解決詳解

    這篇文章主要介紹了微信公眾號 網(wǎng)頁授權(quán)登錄及code been used解決詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java中CopyOnWriteArrayList的使用解析

    Java中CopyOnWriteArrayList的使用解析

    這篇文章主要介紹了Java中CopyOnWriteArrayList的使用解析,CopyOnWriteArrayList適合使用在讀操作遠遠大于寫操作的場景里,比如緩存,它不存在擴容的概念,每次寫操作都要復(fù)制一個副本,在副本的基礎(chǔ)上修改后改變Array引用,需要的朋友可以參考下
    2023-12-12
  • 深入理解spring事務(wù)

    深入理解spring事務(wù)

    這篇文章主要介紹了spring事務(wù)深入理解,介紹了事物特性,事物隔離級別,事物的具體使用實例,有感興趣的同學(xué)可以研究下
    2021-03-03
  • Java JDK8新增Optional工具類講解

    Java JDK8新增Optional工具類講解

    這篇文章主要介紹了Java JDK8新增Optional工具類講解,本文通過老版和jdk8對比對null的處理方式,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 如何為Spring Cloud Gateway加上全局過濾器

    如何為Spring Cloud Gateway加上全局過濾器

    這篇文章主要介紹了如何為Spring Cloud Gateway加上全局過濾器,幫助大家更好得理解和學(xué)習(xí)使用Gateway,感興趣的朋友可以了解下
    2021-03-03

最新評論