快速业务通道

一个高效简洁的Struts分页方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

一个高效简洁的Struts分页方法

时间:2011-03-20

在网上看了几个Structs分页,感觉不是很完善,于是根据自己的经验,写了一个相对高效简洁的分页方法。由于本人水平有限,如果大家有什么更好的想法,欢迎不吝赐教。

一、开发环境

我的开发环境是:JBuilder x + Weblogic 8.1 + Oracle 9i + Windows 2003 ,如果朋友们的开发环境不一样亦无妨。

二、开发思路

既然讲的是Struts,那自然离不了MVC,分页显示也是如此。

1、建立数据库和对应的表,本例的表是TCertificate。

2、建立适当的模型组件,对应你要查询数据库中的表。这部分由DAO数据访问层来实现,如果有的朋友对DAO不熟悉可以查询一下相关资料。本例由CertificateDAO.java来实现。

3 、建立分页所需要的模型组件,由javaBean来充当,并与CertificateDAO实现分离。网上介绍的很多方法,都存在着数据与分页组件藕合的现象,这也是本方法与其它分页方法的主要不同之处。

4、建立控制器组件,这部分由Struts 中的Action来实现。主要负责将实例化CertificateDAO,只取要显示的数据记录,存入ArrayList对象然后返回,并放到request中。而分页部分则根据分页条件,单独进行构造,避免了与DAO混在一起的情况发生。网上其它介绍的一些分页方法中,基本上都是一次性读出所有查询的数据,然后再由分页相关组件进行构造。这样,如果数据量大的话,很容易形成瓶颈。在本例中由于不是一次性地读出查询的所有数据,而只是读出一个页面要显示的数据记录,这就节省了很多不必要的数据传输,提高了效率。本例中为CertificateAction.java。

5、建立视图组件,这部分由jsp来充当,为了不出现java 代码,我们使用Struts提供的标签库,主要负责从request中取出刚刚放入的对象,通过反复调用CertificateAction以及action参数,而实现分页显示。本例中为listcertificate.jsp。

6、建立并配置struts-config.xml。

三、实例代码

确定好上面的开发思路后,代码的实现就有单可循了。

1、建数据库和相应的表。

2、数据逻辑层的相关代码。

1)、通用的DAO类:CommonDAO.java

这是一个很多DAO都要继承到的通用DAO类,是我根据实践总结出来的,为了减少篇幅,这里只显示和本例相关的代码。

java代码:

代码:package com.xindeco.business ; import java.io.*; import java.sql.*; import java.util.*; import javax.sql.*; import java.lang.IllegalAccessException; import java.lang.reflect.InvocationTargetException; import org.apache.commons.beanutils.BeanUtils; public class DAO { protected DataSource ds; /** * 说明:取得当前查询的总记录数 */ public int getRows () { return this.count; } public void rsHandler (ResultSet rs, int offset, int limit) { try { count = 0; rs.absolute ( -1) ; count = rs.getRow () ; if (offset <= 0) { rs.beforeFirst () ; } else { rs.absolute (offset) ; } } catch (Exception e) { e.printStackTrace () ; } } public DAO(DataSource ds) { this.ds = ds; } public void setDataSource(DataSource ds) { this.ds = ds; } protected void close(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { } rs = null; } } protected void close(PreparedStatement pstmt) { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { } pstmt = null; } } protected void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } protected void rollback(Connection conn) { if (conn != null)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号