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后页面变化.
闽公网安备 35060202000074号