`
z75148885
  • 浏览: 191362 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用CashFilter实现页面级缓存实践[ OSCache使用]

阅读更多

1.mysql在本地localhost的test数据库 建person表,暂以字段id,name,password,表中可输入一行值.

2.建类 DAOUtil

import java.sql.Connection;
import java.sql.DriverManager;

public class DAOUtil {
public DAOUtil() {
}

public static Connection getConn() {
Connection conn = null;
String db_url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=gb2312";
String db_user = "root";
String db_password= "admin";
String db_driver = "com.mysql.jdbc.Driver";

try {
Class.forName(db_driver);
conn = DriverManager.getConnection(db_url, db_user, db_password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}

/**
* dbclose
* 关闭Connection,Statement
* @param conn Connection
* @param stmt Statement
*/
public static void dbclose(Connection conn, Statement stmt) {
try {
if (stmt != null)
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}

3.建类 PersonDAO

import java.util.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;


public class PersonDAO {
static PersonDAO pdao;
public static PersonDAO getInstance() {
if (pdao == null) {
synchronized (PersonDAO.class) {
pdao = new PersonDAO();
}
}
return pdao;
}

public PersonDAO() {
super(); }

public static void main(String[] args) {
System.out.println("person==="+PersonDAO.getInstance().getPersonInfo());
}

private static List getPersonInfo() {
String name = "";
String password = "";
Connection conn = null;
List list = new java.util.ArrayList();
Statement stmt = null;
String sql =
"select name,password from person";
try {
conn = DAOUtil.getConn();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
name = (String)rs.getString("name");
password = (String)rs.getString("password");
list.add(name+","+password);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
DAOUtil.dbclose(conn, stmt);
}
return list;
}
}

4.建testCache.jsp,testCache2.jsp

<%@page contentType="text/html; charset=GBK"%>
<%@page import="com.mcsky.dao.PersonDAO" session="false"%>
<%@page import="java.util.List" session="false"%>
<html>
<body bgcolor="#FFFFFF">
test ,hello world!!<p>
<table width="85%" border="1" align="center">
<tr>
<td width="8%" height="20"> <div align="center">序号</div></td>
<td width="12%"><div align="center">名字</div></td>
<td width="17%"><div align="center">密码 </div></td>
</tr>
<%
//todo connect mysql server (localhost root/admin) and test(db) person(table)
List list =PersonDAO.getInstance().getPersonInfo();
System.out.println("size==="+list.size());
for(int i=0;i<list.size();i++){
String namePass = (String)list.get(i);
java.util.StringTokenizer st = new java.util.StringTokenizer(namePass,",");
String name = st.nextToken();
String pass = st.nextToken();
System.out.println("namePass+++++"+namePass);
%>
<tr>
<td><div align="center"><%=i+1%></div></td>
<td> <div align="center"><%=name%></div></td>
<td><div align="center"><%=pass%></div></td>
</tr>
<%
}
%>
</table>

</body>
</html>

5.把module部署在tomcat的webapp下

5.1 在WEB-INF\lib\log4j-1.2.8.jar,mysql-connector-java-3.0.11-stable-bin.jar,oscache-2.3.2.jar,commons-logging.jar,jgroups-all.jar

5.2 在WEB-INF\classes拷贝cach\etc\下的oscache.tld,oscache.properties

5.3 只对/testCache.jsp缓存

修改WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>test</display-name>
<taglib><taglib-uri>oscache</taglib-uri><taglib-location>/WEB-INF/classes/ oscache.tld</taglib-location></taglib>
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/testCache.jsp</url-pattern>
</filter-mapping>

</web-app>

启动tomcat,在mysql的person中增加一条记录,发现已对/testCache.jsp页面进行缓存,而/testCache2.jsp页面未缓存,如去掉黑体,则数据表增加一行,testCache.jsp也随之修改

5.4对所有的jsp缓存,

修改WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>test</display-name>
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>session</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter
</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>

其中60s,是失效时间,在mysql的person中增加一条记录,发现已对/testCache.jsp,/testCache2.jsp页面进行缓存,页面不变化,60s后页面变化.终于

分享到:
评论

相关推荐

    基于OSCache的页面缓存(收藏)

    OSCache是Apache软件基金会的开源项目,它是一个高性能、易用的Java缓存框架,广泛应用于各种企业级应用系统中,特别是用于实现页面级别的缓存。这篇博客将深入探讨如何利用OSCache来实现页面缓存,并结合实际案例...

    hibernate+oscache实现二级缓存实例

    本实例将介绍如何结合Hibernate和OSCache实现二级缓存,以优化应用程序的性能。 一级缓存是Hibernate内置的Session级别的缓存,它存储了在同一个Session内操作的对象,避免了频繁的数据库读写。然而,一级缓存仅...

    oscache缓存技术

    - **清理缓存**:可以调用`OsCache.clear()`方法清空整个缓存,或者使用`OsCache.evict(key)`清除指定的缓存条目。 ### 4. osCache的高级特性 - **事件监听**:osCache允许注册监听器来处理缓存的添加、删除和更新...

    oscache,缓存机制的使用

    oscache是一款开源的Java缓存解决方案,其核心功能在于能够缓存Web应用中的动态内容,从而显著提升页面加载速度和服务器资源利用率。它通过在服务器端存储已生成的动态数据,避免了频繁的数据查询和页面渲染,有效...

    OsCache缓存框架使用示例

    OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...

    缓存技术 oscache-2.3.2.jar包下载

    缓存技术 oscache-2.3.2.jar包下载

    基于OSCache的页面缓存

    二、缓存页面的部分 1. OSCache标签库配置 为了使用OSCache的标签库,首先需要将`soscache.tld`文件放入CLASSPATH路径下,并在`web.xml`中声明: ```xml &lt;taglib-uri&gt;oscache &lt;taglib-location&gt;/WEB-INF/...

    oscache-java缓存框架

    - **集群支持**:在分布式环境中,osCache可以实现多节点间的缓存同步,确保数据一致性。 - **缓存预热**:允许在应用启动时加载预定义的数据到缓存,提高应用启动速度。 - **缓存监听器**:可以通过监听器来监控...

    SSM的整合+OScache页面缓存+freemark模板

    在SSM项目中引入OScache,可以在服务器端对经常访问的页面进行缓存,提高页面加载速度,减轻服务器压力。配置OScache主要包括设置缓存策略、缓存范围以及缓存失效策略等。 【Freemarker模板】 Freemarker是一个基于...

    OSCACHE配置URL实现页面缓存的Fliter(修改配置无需重启)

    标题 "OSCACHE配置URL实现页面缓存的Filter(修改配置无需重启)" 提示我们讨论的是一个使用OSCache(OpenSymphony Cache)库来缓存Web应用程序中特定URL页面的过滤器配置。OSCache是一个开源的Java缓存框架,用于提高...

    oscache缓存技术入门实例

    3. 更新通知:当缓存中的数据发生变化时,osCache可以通过事件机制通知其他系统组件,实现数据的一致性。 4. 缓存同步:在多线程或多服务器环境下,osCache提供了一套机制来确保缓存数据的一致性和完整性。 三、...

    OSCache缓存jsp例子

    此外,OSCache还提供了API来实现更复杂的缓存操作,如清除特定缓存项、刷新整个缓存等。开发者可以根据实际需求选择合适的缓存策略和管理方法。 在实际应用中,需要注意监控和调整缓存设置,以确保最佳性能。过度...

    oscache缓存配置

    在Web应用中,osCache常与Spring框架集成,利用Spring的AOP(面向切面编程)能力实现缓存的自动化管理。通过定义Bean并使用`@Cacheable`注解,可以轻松地为特定方法开启缓存功能。 总的来说,osCache提供了强大的...

    oscache缓存使用总结.doc

    OSCache 是一个广泛使用的开源缓存解决方案,尤其在Java应用中,它被JBoss, Hibernate, Spring等知名框架所支持。其主要特点是配置简单,适用于页面级别的缓存管理。以下是对OSCache配置和使用过程的详细说明: 1. ...

    oscache对象缓存

    《oscache对象缓存详解》 在IT领域中,缓存技术是提高系统性能的关键一环,尤其是在高并发、大数据量的应用场景下。...在实践中,开发者应结合具体业务需求,灵活运用oscache的各种特性,以实现最佳的缓存效果。

    Hibernate OSCache缓存

    总之,Hibernate 结合 OSCache 实现的二级缓存能够显著提升数据读取效率,降低数据库压力,但需要注意合理配置和使用,以确保最佳性能和数据一致性。在实际项目中,应根据具体业务场景选择合适的缓存策略,并持续...

Global site tag (gtag.js) - Google Analytics