Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>EJB技术>>使用 Java Bean 实现数据分页显示
使用 Java Bean 实现数据分页显示
2005-06-08   来源:未知  作者:未知
提交的前一个有误 
使用bean可以简化页面代码,将逻辑封装到bean中,提高了代码的保密性和系统的安全性,另外由于jsp代码没有很好的调试环境,调试比较困难,逻辑代码封装到bean中还方便了程序的调试。 
这个Bean 使用到了一个自己写的pool 
com.cdc.database.util.* 
输入参数: 
setPage(String page) //当前页码取得(默认为第一页) 
setPageSize(String size) //设定每页显示记录数目(默认为每页显示10条记录) 

setSqlParam(String param) //检索返回字段(只有一个字段) 

setSqlstr(String str) //取得sql语句的检索条件 
setTable(String table) //设定检索数据表。 

返回参数: 

getData() //取得记录集(返回为hashtable, key为顺序号) 
getPageCount() //返回总页码数 

getRowCount() //总记录数 

以下为源代码,请大家指正 

package cdcapp; 

/** 
* 此处插入类型说明。 
* 记录分页BEAN 
* 创建日期:(2001-7-23 9:20:19) 
* @author:Administrator 
*/ 
import java.util.*; 
import java.io.*; 
import java.sql.*; 
import com.cdc.database.util.*; 
public class PagesBean { 
int intPage; //当前页码 
int intPageSize; //每页记录数 
int intRowCount; //总记录数 
int intPageCount ; //总页码数 
String tablename; //数据表名 
String sqlstr; //sql语句的检索条件 
String sqlparam; //选取参数 
/** 
* 此处插入方法说明。 
* 取得记录集(返回为hashtable, key为顺序号) 
* 创建日期:(2001-7-24 11:19:56) 
* @return java.util.Hashtable 
*/ 
public Hashtable getData() 


Hashtable returnrow = new Hashtable(); 
Connection conn = null; 
try 

String selectsql; 
conn = LocalPool.getConnection(); //连接数据库 
int RowCount = rowcount(); 
selectsql = selectstr(); 
intPageCount = (RowCount + intPageSize - 1) / intPageSize; //总页码数 
PreparedStatement pstmt = conn.prepareStatement(selectsql); 
ResultSet rs = pstmt.executeQuery(); 
if (intPage > RowCount) 
intPage = intPageCount; //输入页码数大于总页码数的处理 

if (intPageCount > 0) 

int startrow = (intPage - 1) * intPageSize + 1; //开始显示记录数 
for (int i = 0; i < startrow; i++) 

rs.next(); 
} //将记录指针定位到待显示页的第一条记录上 

//判断字段数据类型 
//date型 返回 93 
//int型 返回 2 
//String型 返回 12 
ResultSetMetaData columnType = rs.getMetaData(); 
int t = 0; 
System.out.println("type=" + columnType.getColumnType(1)); 
if (columnType.getColumnType(1) == 12) 


//输出数据 
int i = 0; 
while (i < intPageSize && !rs.isAfterLast()) 

String ResultSet = rs.getString(1); 

//获取数据写入hashtable 
returnrow.put(new Integer(i),ResultSet); 
rs.next(); 
i++; 


} else if (columnType.getColumnType(1) == 2) 


//输出数据 
int i = 0; 
while (i < intPageSize && !rs.isAfterLast()) 

int ResultSet = rs.getInt(1); 
//获取数据写入hashtable 
returnrow.put(new Integer(i), new Integer(ResultSet)); 

rs.next(); 
i++; 


} else if (columnType.getColumnType(1) == 93) 


//输出数据 
int i = 0; 
while (i < intPageSize && !rs.isAfterLast()) 

String ResultSet = rs.getDate(1).toString(); 
//获取数据写入hashtable 
returnrow.put(new Integer(i), ResultSet); 

rs.next(); 
i++; 




pstmt.close(); 

conn.close(); 

conn = null; 

} catch (SQLException ex) 


System.out.print("错误="); 
ex.printStackTrace(System.out); 
if (conn != null) 


try 


conn.close(); 

} catch (Exception e) 






return returnrow; 

/** 
* 此处插入方法说明。 
* 返回总页码数 
* 创建日期:(2001-7-24 13:51:04) 
* @return int 
*/ 
public int getPageCount() 

return intPageCount; 

/** 
* 此处插入方法说明。 
* 总记录数 
* 创建日期:(2001-7-24 13:50:09) 
* @return int 
*/ 
public int getRowCount() 


return intRowCount; 

/** 
* 此处插入方法说明。 
* 创建日期:(2001-7-23 10:03:58) 
* @param args java.lang.String[] 
*/ 
public static void main(String[] args) 

PagesBean pb = new PagesBean(); 
pb.setPageSize("10"); 
pb.setSqlstr(" username like "%%" "); 
//pb.setSqlstr(" 版次=10 "); 
pb.setTable("t_user"); 
//pb.setTable("demo"); 
pb.setSqlParam("passwd"); 
//pb.setSqlParam("作者"); 
pb.setPage("2"); 
Hashtable myarray = pb.getData(); 
System.out.println("size=" + myarray.size()); 
int d = 1; 
System.out.println("msg=" + myarray.get(new Integer(d))); 
int cc = pb.rowcount(); 
System.out.println("rowcount=" + cc); 
System.out.println("pagecount=" + pb.getPageCount()); 
String[] cq = new String[25]; 
System.out.println("lent=" + cq.length); 
for (int i = 0 ;i<myarray.size();i++ ) 

System.out.println("msg"+i+"=" + myarray.get(new Integer(i))); 



/** 
* 此处插入方法说明。 
* 返回记录总数。 
* 创建日期:(2001-7-25 8:42:47) 
* @return int 

*/ 
private int rowcount() 

Connection conn = null; 
try 

String countsql; //sql语句计算记录总数 
if (sqlstr == null) 

countsql = new String("select count(*) " + " from " + tablename); 
} else 

countsql = 
new String("select count(*) " + " from " + tablename + " where " + sqlstr); 

conn = LocalPool.getConnection(); //连接数据库 
PreparedStatement pstmt = conn.prepareStatement(countsql); 
ResultSet rs = pstmt.executeQuery(); 
rs.next(); 
intRowCount = rs.getInt(1); //总记录数 
rs.close(); 
pstmt.close(); 
conn = null; 

} catch (Exception ex) 

System.out.println("错误!"); 
if (conn != null) 


try 


conn.close(); 

} catch (Exception e) 






return intRowCount; 

/** 
* 此处插入方法说明。 
* 返回查询sql语句. 
* 创建日期:(2001-7-26 8:57:39) 
* @return java.lang.String 
*/ 
private String selectstr() 

String sql; 
if (sqlstr == null) 

sql = new String("select " + sqlparam + " from " + tablename); 
} else 

sql = 
new String( 
"select " + sqlparam + " from " + tablename + " where " + sqlstr); 

return sql; 

/** 
* 此处插入方法说明。 
* 当前页码取得(默认为第一页) 
* 创建日期:(2001-7-23 10:14:26) 
* @param param int 
*/ 
public void setPage(String page) 

if (page.trim().length() == 0)//检查输入参数是否为空 

this.intPage = 1; 
} else if (page.trim().length() != 0) 

this.intPage = Integer.parseInt(page); 

if (this.intPage < 1) 
this.intPage = 1; 


/** 
* 此处插入方法说明。 
* 设定每页显示记录数目(默认为每页显示10条记录) 
* 创建日期:(2001-7-23 10:19:06) 
* @param pagenumber int 
*/ 
public void setPageSize(String size) 

if (size.trim().length() == 0)//检查输入参数是否为空 

this.intPageSize = 10; 
} else if (size.trim().length() != 0) 

this.intPageSize = Integer.parseInt(size); 

if (this.intPageSize < 1) 
this.intPageSize = 10; 


/** 
* 此处插入方法说明。 
* 检索返回字段(只有一个字段) 
* 创建日期:(2001-7-24 18:08:02) 
* @return java.lang.String 
* @param param java.lang.String 
*/ 
public void setSqlParam(String param) 

if (param.trim().length() != 0)//检查输入参数是否为空 

this.sqlparam = param.trim(); 



/** 
* 此处插入方法说明。 
* 取得sql语句的检索条件 
* 创建日期:(2001-7-23 10:00:30) 
* @param sqlstr java.lang.String 
*/ 
public void setSqlstr(String str) 

if (str.trim().length() != 0) //检查输入参数是否为空 

this.sqlstr = str.trim(); 
} else 
this.sqlstr = new String(" "); 

/** 
* 此处插入方法说明。 
* 设定检索数据表。 
* 创建日期:(2001-7-24 10:41:51) 
* @param tablename java.lang.String 
*/ 
public void setTable(String table) 


if (table.trim().length() != 0) //检查输入参数是否为空 

this.tablename = table.trim(); 





另外还用到localpool源代码如下 

package com.cdc.database.util; 




/** 
* 在此处插入类型说明。 
* 创建日期:(2000-5-16 14:01:56) 
* @author:Administrator 
*/ 
import java.sql.*; 
import javax.sql.*; 
import oracle.jdbc.driver.*; 
import oracle.jdbc.pool.*; 
import javax.servlet.*; 

public class LocalPool 

private static java.util.ResourceBundle rb = null; 
public static OracleConnectionCacheImpl odsU = null; 
public static OracleConnectionCacheImpl ods = null; 
static 

try 

//rb = java.util.ResourceBundle.getBundle("com.cdc.database.util.DatabaseConfig"); 
String url = "jdbc:oracle:thin:@192.9.200.76:1521:cdc"; 
String user = "cdc"; 
String pass = "cdc"; 
ods = new OracleConnectionCacheImpl(); 
odsU= new OracleConnectionCacheImpl(); 

//odsU.setURL(rb.getString("userdb_url")); 
//odsU.setUser(rb.getString("userdb_user")); 
//odsU.setPassword(rb.getString("userdb_pass")); 

odsU.setURL(url); 
odsU.setUser(user); 
odsU.setPassword(pass); 

//ods.setCacheScheme(OracleConnectionCacheImpl.FIXED_WAIT_SCHEME); 
// Set the Max Limit 
int nMin = 2; 
int nMax = 5; 
/* 
try 

nMin = Integer.parseInt(rb.getString("userdb_minlimit")); 
nMax = Integer.parseInt(rb.getString("userdb_maxlimit")); 

catch (Exception ex) 


*/ 
odsU.setMaxLimit(nMax); 
odsU.setMinLimit(nMin); 

//ods.setURL(rb.getString("url")); 
//ods.setUser(rb.getString("user")); 
//ods.setPassword(rb.getString("pass")); 
ods.setURL(url); 
ods.setUser(user); 
ods.setPassword(pass); 
// Set the Max Limit 
nMin = 2; 
nMax = 5; 
try 

nMin = Integer.parseInt(rb.getString("minlimit")); 
nMax = Integer.parseInt(rb.getString("maxlimit")); 

catch (Exception ex) 


ods.setMaxLimit(nMax); 
ods.setMinLimit(nMin); 

catch (Exception ex) 


//throw ex; 
ex.printStackTrace(System.out); 


/** 
* DBobj 构造子注解。 
*/ 
public LocalPool() { 
super(); 


/** 
* 当将此对象作为垃圾收集时要执行的代码。 

* 完成方法所抛出的任何异常都会导致完成过程 
* 停止。但如果是其它异常,则将被忽略。 
*/ 
protected void finalize() throws Throwable { 
//在此处插入用来完成接收器的代码。 
//此实现仅把信息转发给上一级。您可以替换或补充此实现。 
super.finalize(); 

/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-2 22:38:16) 
* @return int 
*/ 
static public int getActiveSize() 

if(ods!=null) 

return ods.getActiveSize(); 

else 

return 0; 


/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-2 22:38:16) 
* @return int 
*/ 
static public int getActiveSizeU() 

if(odsU!=null) 

return odsU.getActiveSize(); 

else 

return 0; 


/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-2 22:39:21) 
* @return int 
*/ 
static public int getCacheSize() 

if(ods!=null) 

return ods.getCacheSize(); 

else 

return 0; 


/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-2 22:39:21) 
* @return int 
*/ 
static public int getCacheSizeU() 

if(odsU!=null) 

return odsU.getCacheSize(); 

else 

return 0; 


/** 
* 在此处插入方法说明。 
* 创建日期:(2000-5-16 14:27:57) 
* @return java.sql.Connection 
*/ 
static public Connection getConnection() throws SQLException 

Connection conn=null; 
try 

if(ods!=null) 

synchronized(ods) 

conn = ods.getConnection(); 
return conn; 


else 

return null; 


catch(SQLException ex) 

throw ex; 

catch (Exception e) 

throw new SQLException("获取数据库连接时出现异常"); 


/** 
* 在此处插入方法说明。 
* 创建日期:(2000-5-16 14:27:57) 
* @return java.sql.Connection 
*/ 
static public Connection getConnectionU() throws SQLException 

Connection conn=null; 
try 

if(odsU!=null) 

synchronized(odsU) 

conn = odsU.getConnection(); 
return conn; 


else 

return null; 


catch(SQLException ex) 

ex.printStackTrace(System.out); 
throw ex; 

catch (Exception e) 

System.out.println("获取数据库连接时出现异常"); 
e.printStackTrace(System.out); 
throw new SQLException("获取数据库连接时出现异常"); 


/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-3 0:40:59) 
*/ 
static public void reCreatePool() throws SQLException 

try 

OracleConnectionCacheImpl ods1 = new OracleConnectionCacheImpl(); 
ods1.setURL(rb.getString("url")); 
ods1.setUser(rb.getString("user")); 
ods1.setPassword(rb.getString("pass")); 
// Set the Max Limit 
int nMin = 50; 
int nMax = 200; 
try 

nMin = Integer.parseInt(rb.getString("minlimit")); 
nMax = Integer.parseInt(rb.getString("maxlimit")); 

catch (Exception ex) 


ods1.setMaxLimit(nMax); 
ods1.setMinLimit(nMin); 

OracleConnectionCacheImpl ods2=ods; 
ods=ods1; 
synchronized (ods2) 

if(ods2!=null) ods2.close(); 

ods2=null; 

catch(Exception ex) 

ex.printStackTrace(System.out); 


/** 
* 在此处插入方法说明。 
* 创建日期:(01-4-3 0:40:59) 
*/ 
static public void reCreatePoolU() throws SQLException 

try 

OracleConnectionCacheImpl odsU1 = new OracleConnectionCacheImpl(); 
odsU1.setURL(rb.getString("userdb_url")); 
odsU1.setUser(rb.getString("userdb_user")); 
odsU1.setPassword(rb.getString("userdb_pass")); 
//ods.setCacheScheme(OracleConnectionCacheImpl.FIXED_WAIT_SCHEME); 
// Set the Max Limit 
int nMin = 10; 
int nMax = 100; 
try 

nMin = Integer.parseInt(rb.getString("userdb_minlimit")); 
nMax = Integer.parseInt(rb.getString("userdb_maxlimit")); 

catch (Exception ex) 


odsU1.setMaxLimit(nMax); 
odsU1.setMinLimit(nMin); 
OracleConnectionCacheImpl odsU2 = odsU; 
odsU = odsU1; 
synchronized (odsU2) 

if (odsU2 != null) 
odsU2.close(); 

odsU2 = null; 

catch (Exception ex) 

ex.printStackTrace(System.out); 


}
  --相关文章--
· 配置WebLogic Server集群二(组图) (2007-04-17)
· 配置WebLogic Server集群一(组图) (2007-04-17)
· 程序员应用EJB 3.0必要的准备 (2007-04-17)
· 用EJB 3.0开发企业级Bean组件初体验 (2007-04-17)
· 漫谈EJB在Java中的应用 (2007-04-17)
· 深入探究EJB应用技术的体系结构 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接