在 servlet 中使用 EhCache 緩存

jopen 11年前發布 | 57K 次閱讀 Ehcache 緩存組件

本文主要介紹 在純servlet應用中 整合 EhCache 緩存的使用

1.整合EhCache首先我們要下載EhCache的架包
下載地址:http://ehcache.org/downloads/catalog
直接下載 hcache-2.7.4-distribution.tar.gz 

下載后,我們解壓出來到lib文件夾里找到架包,總共有3個文件
ehcache-2.7.4.jar
slf4j-api-1.6.6.jar
slf4j-jdk14-1.6.6.jar
這3個文件我們都是需要的,直接導入到項目里
在 servlet 中使用 EhCache 緩存

2.導入架包之后,我們要考慮怎么和servlet容器進行整合
上一篇文章中 我介紹了 怎么在 servlet 中使用和初始化 ServletContext 也就是全局變量 

那我們整合EhCache 是否就可以 把 EhCache 放到 ServletContext 里去?

照例,先實現一個ServletContext的監聽器并且在ServletContext初始化的時候初始化我們的EhCache

public class ContextLoaderListener implements ServletContextListener{

    //實現全局上下文初始化方法
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //獲得全局變量
        ServletContext servletContext = servletContextEvent.getServletContext();
        //初始化 EhCache 管理器
        CacheManager cacheManager = new CacheManager();
        //初始化 defaultCache Cache
        Cache cache = cacheManager.getCache("defaultCache");
        //新建一個cache節點,并賦值"value1"
        Element element = new Element("key1","value1");
        //把cache節點存儲到默認的cache
        cache.put(element);
        //將cahe存儲到全局變量(servletContext)
        servletContext.setAttribute("Cache",cache);
    }


    //實現全局上下文銷毀函數
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //實現 
    }
}

在 web.xml 里配置 contextInitialized 監聽器

<listener>
    <listener-class>listener.ContextLoaderListener</listener-class>
</listener>
3.整合完畢,然后我們就可以測試是否整合成功

因為前面我們初始化的時候已經給cache存儲了一個key為“key1”的cache節點
所以我們在helloOut這個servlet中直接查看是否可以取到"key1"節點


public class HelloOut extends HttpServlet {
    public void service(HttpServletRequest request,HttpServletResponse response) throws IOException {
        PrintWriter writer = response.getWriter();
        writer.println("Hello Word For BAE3");
        //獲取全局變量
        ServletContext servletContext = getServletContext();
        //從全局變量獲取 cache
        Cache cache = (Cache) servletContext.getAttribute("Cache");
        //輸出cache中key為"key1"節點的value
        writer.println(cache.get("key1").getObjectValue());
        writer.close();

    }
}
打開 http://localhost:8080/EhCacheTest_war_exploded/hello
在 servlet 中使用 EhCache 緩存

可以明顯的看到,我們已經在helloOut這個servlet中取到cache里面"key1"節點的value

預告下一篇文章:java servlet + EhCache 實現的 短鏈接 項目

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!