在 servlet 中使用 EhCache 缓存
jopen
11年前
本文主要介绍 在纯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个文件我们都是需要的,直接导入到项目里
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
可以明显的看到,我们已经在helloOut这个servlet中取到cache里面"key1"节点的value
预告下一篇文章:java servlet + EhCache 实现的 短链接 项目