放假了,首先祝大家端午节快乐,今天下雨,没事干研究了下ehcache,从ehcache官网查看了一番后,看了看网上别人的blog,没有ehcache的详细用法,所以自己小试了一下,第一次使用ehcache可能有些地方不正确,希望大家帮我纠正,共同进步。
我采用struts2+ehcache。代码如下:
1、index.jsp
view plaincopy to clipboardprint?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>
<body>
<a href="colorAction.action" mce_href="colorAction.action">查看所有颜色</a>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>
<body>
<a href="colorAction.action" mce_href="colorAction.action">查看所有颜色</a>
</body>
</html>
2、ColorAction.java
view plaincopy to clipboardprint?
package com.ehcache.servlet;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import com.ehcache.database.ColorDatabase;
import com.ehcache.util.EhcacheUtil;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ColorAction extends ActionSupport {
private List<String> list = null;
@SuppressWarnings("unchecked")
public String allColor() throws Exception {
//获取CacheManager
CacheManager cacheManager = EhcacheUtil.getCacheManager();
list = new ArrayList<String>();
//用配置文件中配置的colorcache创建cache缓存
Cache cache = cacheManager.getCache("colorcache");
//查看cache中是否存在allColor的缓存
Element element = cache.get("allColor");
//如果不存在,从数据库中查询
if (element == null) {
Map<String, Color> maps = ColorDatabase.getAllColor();
java.util.Iterator<String> iter = maps.keySet().iterator();
while (iter.hasNext()) {
Color color = maps.get(iter.next());
list.add(color.toString());
}
cache.put(new Element("allColor", list));
} else {//如果存在,从缓存中加载
list = (List<String>) element.getValue();
}
return "allColor";
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
package com.ehcache.servlet;
import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import com.ehcache.database.ColorDatabase;
import com.ehcache.util.EhcacheUtil;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ColorAction extends ActionSupport {
private List<String> list = null;
@SuppressWarnings("unchecked")
public String allColor() throws Exception {
//获取CacheManager
CacheManager cacheManager = EhcacheUtil.getCacheManager();
list = new ArrayList<String>();
//用配置文件中配置的colorcache创建cache缓存
Cache cache = cacheManager.getCache("colorcache");
//查看cache中是否存在allColor的缓存
Element element = cache.get("allColor");
//如果不存在,从数据库中查询
if (element == null) {
Map<String, Color> maps = ColorDatabase.getAllColor();
java.util.Iterator<String> iter = maps.keySet().iterator();
while (iter.hasNext()) {
Color color = maps.get(iter.next());
list.add(color.toString());
}
cache.put(new Element("allColor", list));
} else {//如果存在,从缓存中加载
list = (List<String>) element.getValue();
}
return "allColor";
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
3、ColorDatabase.java 代替数据库。
view plaincopy to clipboardprint?
package com.ehcache.database;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
/**
* 在ehcache-2.1.0中的samples\colorcache 的例子中修改了一下,这个代替了数据库。
*/
public class ColorDatabase {
private static Map<String,Color> colorMap = new HashMap<String,Color>();
static{
colorMap.put("red", Color.red);
colorMap.put("blue", Color.blue);
colorMap.put("green", Color.green);
colorMap.put("white", Color.white);
colorMap.put("black", Color.black);
colorMap.put("lightGray", Color.lightGray);
colorMap.put("gray", Color.gray);
colorMap.put("darkGray", Color.darkGray);
colorMap.put("pink", Color.pink);
colorMap.put("orange", Color.orange);
colorMap.put("yellow", Color.yellow);
colorMap.put("magenta", Color.magenta);
colorMap.put("cyan", Color.cyan);
}
public static Map<String,Color> getAllColor(){
return colorMap;
}
}
package com.ehcache.database;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
/**
* 在ehcache-2.1.0中的samples\colorcache 的例子中修改了一下,这个代替了数据库。
*/
public class ColorDatabase {
private static Map<String,Color> colorMap = new HashMap<String,Color>();
static{
colorMap.put("red", Color.red);
colorMap.put("blue", Color.blue);
colorMap.put("green", Color.green);
colorMap.put("white", Color.white);
colorMap.put("black", Color.black);
colorMap.put("lightGray", Color.lightGray);
colorMap.put("gray", Color.gray);
colorMap.put("darkGray", Color.darkGray);
colorMap.put("pink", Color.pink);
colorMap.put("orange", Color.orange);
colorMap.put("yellow", Color.yellow);
colorMap.put("magenta", Color.magenta);
colorMap.put("cyan", Color.cyan);
}
public static Map<String,Color> getAllColor(){
return colorMap;
}
}
4、allColor.jsp
view plaincopy to clipboardprint?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'allColor.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>
<body>
<s:iterator value="list">
<s:property/><br>
</s:iterator>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'allColor.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>
<body>
<s:iterator value="list">
<s:property/><br>
</s:iterator>
</body>
</html>
5、ehcache.xml
view plaincopy to clipboardprint?
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
<cache name="colorcache" maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" />
</ehcache>
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
<cache name="colorcache" maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true" />
</ehcache>
6、struts.xml
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts" extends="struts-default">
<action name="colorAction" class="com.ehcache.servlet.ColorAction" method="allColor">
<result name="allColor">/allColor.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts" extends="struts-default">
<action name="colorAction" class="com.ehcache.servlet.ColorAction" method="allColor">
<result name="allColor">/allColor.jsp</result>
</action>
</package>
</struts>
7、EhcacheUtil.java
view plaincopy to clipboardprint?
package com.ehcache.util;
import net.sf.ehcache.CacheManager;
public class EhcacheUtil {
private EhcacheUtil(){}
private static CacheManager cacheManager = null;
static{
cacheManager = CacheManager.create();
}
public static CacheManager getCacheManager(){
return cacheManager;
}
}
分享到:
评论