快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
{ try { conn.rollback(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }

这个类主要是通过子类传进来的先进结果集,取得查询的记录总数,并对数据库连接进行简单的管理。

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

时间:2011-03-20

2)、对数据库进行访问:CertificateDAO.java

java代码:

代码:

package com.xindeco.business; import java.io.*; import java.sql.*; import java.util.*; import javax.sql.*; import com.xindeco.common.dbconn.DbConn; public class CertificateDAO extends DAO { public NationDAO(DataSource ds) { super(ds); } public List findCertificateList(int offset,int limit) throws SQLException { int countRows = 0 ; ArrayList list = null ; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = ds.getConnection(); String sql = "SELECT certificateID, certificateCode,certificateName,photoURL," + "description,graduateID FROM TCertificate " ; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); /*对游标进行处理,rsHandler 方法在父类DAO中*/ this.rsHandler(rs,offset,limit); if (rs != null && rs.next ()) { list = new ArrayList () ; do { countRows++ ; list.add (rs2VO (rs)) ; } while ( (countRows++ < limit) && rs.next ()) ; } close(rs); close(pstmt); } catch (SQLException e) { close(rs); close(pstmt); rollback(conn); e.printStackTrace(); } finally { close(conn); } return list ; } private CertificateVO rs2VO (ResultSet rs) { try { CertificateVO certificateVO = new CertificateVO () ; certificateVO.setCertificateID (rs.getInt ("certificateID")) ; certificateVO.setCertificateCode (rs.getString ("certificateCode")) ; certificateVO.setCertificateName (rs.getString ("certificateName")) ; certificateVO.setPhotoURL (rs.getString ("photoURL")) ; certificateVO.setDescription (rs.getString ("description")) ; certificateVO.setGraduateID (rs.getInt ("graduateID")) ; return certificateVO ; } catch (Exception ex) { ex.printStackTrace () ; return null ; } } }

findCertificateList(int offset,int limit)是查得所有要显示的数据,并放入ArrayList中。看过网上有些例子,把数据记录放入ArrayList的动作过程直接在while循环体里完成,如果字段多的话,会造成方法过于宠大,又不美观。 这里,数据记录放入ArrayList的动作过程由rs2VO方法完成,就比较整洁了。另外,if (rs != null && rs.next ()) 配合while ( (countRows++ < limit) && rs.next ()) 是为了程序的健壮性考虑的,稍分析一下不难得出结论。

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

时间:2011-03-20

3、建立控制器组件:CertificateAction.java

java代码:

代码:

package com.xindeco.presentation; import javax.sql.* ; import java.util.* ; import javax.servlet.http.* ; import javax.servlet.* ; import org.apache.struts.action.* ; import org.apache.struts.util.* ; import com.xindeco.common.Pager; import com.xindeco.business.graduatedata.CertificateDAO ; public class CertificateAction extends Action { private static final int PAGE_LENGTH = 5 ; //每页显示5条记录 public A

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号