放假了,首先祝大家端午节快乐,今天下雨,没事干研究了下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;
}
}
分享到:
相关推荐
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
在IT行业中,Spring、Struts2和Hibernate是Java企业级应用开发中常见的三大框架,而Ehcache则是一个广泛使用的缓存解决方案。这篇博客“spring struts2 hibernate ehcache整合”显然探讨了如何将这四个组件集成到同...
同时使用了Struts2、Spring4、Hibernate4、log4j、slf4j、junit4、ehcache等库或框架,搭建一个最基本的项目原型。 三、 三大框架最新版本下载:截止2014-10-01 Struts2.3.6:发布于2014-05-03,目前的最新版本。...
这是一个整合了多个核心技术的Java Web开发资源包,涵盖了Spring 3、Hibernate 4、Struts 2、DBCP、MySQL、JSON、Ehcache以及DOM4J等组件。以下将详细解析这些技术及其在Web开发中的应用。 1. **Spring框架**:...
在Struts2中,开发者可以方便地进行表单验证、拦截器的使用以及结果转发等操作。 **Hibernate** 则是Java中流行的持久化框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。然而,频繁的...
例如,为了使用Ehcache,需要在Spring配置文件中添加Ehcache的相关bean,然后在Hibernate的SessionFactory配置中启用二级缓存。此外,还需要在Struts的Action中调用由Spring管理的业务服务,这些服务通常会利用...
struts2+spring+hibernate集成例子,包含所有jar包,ehcache二级缓存,mysql数据,需要自己创建
首先,Struts2是一个强大的MVC(Model-View-Controller)框架,它在Web应用程序中负责控制流程。Struts2提供了丰富的拦截器和插件机制,使得开发者能够方便地处理用户请求,进行数据验证、事务管理等操作。在注册...
在Web应用中,EhCache可以用于缓存静态内容或频繁查询的结果,减少对数据库的访问,从而提升性能。 Licence管理通常涉及到软件的授权和权限控制,对于企业级应用而言,确保合法使用和防止非法复制是非常重要的。...
- **Hibernate集成**:在Hibernate中使用Ehcache作为二级缓存,需要配置hibernate.cfg.xml文件,并确保Ehcache的provider类设置正确。 在处理这个问题时,遵循“附加jar包”的说明,同时检查上述可能的问题,应该...
3. **整合Spring和Struts2**:通过实现Spring的PlugIn接口并配置到Struts2的配置文件中,可以使Spring接管Struts2的Action实例化。这样,所有的Action都可以由Spring容器管理,实现依赖注入。 4. **整合Spring和...
整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。
在这个"Struts2开发的电子商务系统"中,我们可以通过分析其组件和功能来深入理解这个项目。 首先,让我们从MVC模式开始。在MVC模式中,模型负责管理业务逻辑和数据,视图负责呈现用户界面,而控制器接收用户请求并...
在这个项目中,你可能还会学习到如何配置数据库连接(通常使用Spring的DataSource)、如何编写DAO层(数据访问对象)和Service层来与数据库交互,以及如何在Struts2中定义Action和结果映射,创建表单和控制器。...
这些源代码展示了如何在实际项目中使用Struts2、MyBatis和Spring3进行业务逻辑处理和数据访问。 7. **应用示例**:学习和理解这个整合案例可以帮助开发者掌握如何在实际项目中搭建和配置这样的架构,提高开发效率,...
在Struts2中,通常使用Hibernate或MyBatis这样的持久层框架进行数据操作。这些框架简化了SQL语句的编写,使得开发者能更加专注于业务逻辑,而不是底层的数据库细节。 BBS网站的模型部分涉及到实体类(Entity),如...
这两个压缩包在Java项目中使用时,通常需要将它们解压并将其jar文件添加到项目的类路径中。对于Ehcache的配置,开发者可以通过创建一个名为`ehcache.xml`的配置文件,定义缓存的各个属性。同时,还需要在代码中通过...
接下来是**Struts2**,在Struts2中,我们可以使用拦截器来实现缓存控制。例如,创建一个自定义拦截器,检查请求是否需要缓存,并在必要时将结果存储到缓存中。 最后是**Hibernate**,在Hibernate的配置文件`...
在Struts2框架中,FilterDispatcher是核心组件之一,它负责处理用户请求,并调用相应的Action进行业务逻辑处理。相较于Struts1和WebWork,Struts2的设计更加先进和灵活。 **知识点解析:** 1. **FilterDispatcher**...
- **Spring 配置文件**:在 Spring 配置文件中,定义需要被 Struts2 使用的 Action 对象,使用 `scope` 属性控制bean的作用范围,通常为 `prototype` 或 `request`。 5. **Action类的配置**: - Action 类通常...