重构Struts2 JSP分页.doc_第1页
重构Struts2 JSP分页.doc_第2页
重构Struts2 JSP分页.doc_第3页
重构Struts2 JSP分页.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前两天的Struts2 JSP分页由于过于关注框架实现,导致结构比较混乱。经过一些改动,再次发布。环境是JDK1.6+mysql5.0+jboss4.0+struts 2.0.11已经实现上一版没实现的功能。首先来看UML图,为了简洁性,其中的setter & getter并没有标出。public classShowActionextendsActionSupport privateintcurrentPage = 1; privateinttotalPages; privatebooleanhasNext =false; privatebooleanhasPre = false; private ArrayList pageContentList; private ArrayList indexList private PageRetrieval pr; public String execute() init(); returnSUCCESS; privatevoid init() pr = new PageRetrieval(currentPage); setPageContentList(pr.getPageContentList(); setndexList(pr.getIndexList(); setHasNext(pr.getHasNext(); setHasPre(pr.getHasPre(); setTotalPages(pr.getTotalPages(); /other getters and setters publicclass PageRetrieval private PageInformation pi; public PageRetrieval(int currentPage) pi = new PageInformationFactory().create(currentPage); publicint getTotalPages() returnpi.getPti().getTotalPages(); /other getters and setters publicclass PageInformationFactory private DatabaseServices dataServ; public PageInformationFactory() dataServ = MyDatabaseServices.getInstance(); public PageInformation create(int currentPage) PageInformation pi = new PageInformation(); PageTotalInfo pti = getNewPageTotalInfo(); pi.setPti(pti); if(currentPage pti.getTotalPages() pi.setHasNext(true); if(currentPage !=1) pi.setHasPre(true); pi.setPageContentList(MyDatabaseServices)dataServ).getPageContent(currentPage, pti.getPageSize(); ArrayList indexTemp = getIndexList(currentPage,pti.getTotalPages(); pi.setIndexList(indexTemp); return pi; 本文来自哈客部落 Hake.cc private PageTotalInfo getNewPageTotalInfo() int pageSize = 20; int totalRows = (MyDatabaseServices)dataServ).getRowCount(); int totalPages = (totalRows + pageSize-1)/pageSize; returnnew PageTotalInfo(pageSize,totalPages,totalRows); private ArrayList getIndexList(int currentPage,int totalPages) int up = 0; if(currentPage+20)=totalPages) up = currentPage+20; else up = totalPages+1; ArayList result = new ArrayList(); for(int i=currentPage ;iup; i+) PageIndex temp = new PageIndex(i); result.add(temp); return result; publicclass PageInformation privateintcurrentPage; privatebooleanhasNext = false; privatebooleanhasPre = false; private ArrayList pageContentList; private ArrayList indexList; private PageTotalInfo pti; /other getters and setters publicclass MyDatabaseServices implements DatabaseServices private DataSource ds; private InitialContext ic; private Connection conn; private PreparedStatement ps; private ResultSet rs; privatestatic MyDatabaseServices dgs = new MyDatabaseServices(); private MyDatabaseServices()/use singleton pattern, so the constructor is private try ic = new InitialContext (); ds = (DataSource)ic.lookup(java:jdbc/jsp);/get database source catch(NamingException e) public Connection getConnection() try returnds.getConnection(); catch(SQLException e) e.printStackTrace(); returnnull; public void closeConnection(ResultSet rs,PreparedStatement ps,Connection conn) try if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(conn!=null) conn.close(); catch(SQLException e ) e.printStackTrace(); public ArrayList getPageContent(int currentPage,int pageSize) ArrayList list=new ArrayList(); conn = getConnection(); try ps = conn.prepareStatement(SELECT * FROM jsptest LIMIT ?,?); int temp = (currentPage-1)*20; ps.setInt(1, temp); ps.setInt(2, pageSize); rs = ps.executeQuery(); while (rs.next() User user = new User(); user.setId(rs.getString(1); user.setName(rs.getString(2); list.add(user); return list; catch(SQLException e) e.printStackTrace(); finally dgs.closeConnection(rs, ps, conn); returnnull; publicint getRowCount() conn = getConnection(); try ps = conn.prepareStatement(SELECT * FROM jsptest); rs = ps.executeQuery(); rs.last(); int result = rs.getRow(); rs.first(); return result; 本文来自哈客部落 Hake.cc public Connection getConnection() try returnds.getConnection(); catch(SQLException e) e.printStackTrace(); returnnull; public void closeConnection(ResultSet rs,PreparedStatement ps,Connection conn) try if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(conn!=null) conn.close(); catch(SQLException e ) e.printStackTrace(); public ArrayList getPageContent(int currentPage,int pageSize) ArrayList list=new ArrayList(); conn = getConnection(); try ps = conn.prepareStatement(SELECT * FROM jsptest LIMIT ?,?); int temp = (currentPage-1)*20; ps.setInt(1, temp); ps.setInt(2, pageSize); rs = ps.executeQuery(); while (rs.next() User user = new User(); user.setId(rs.getString(1); user.setName(rs.getString(2); list.add(user); return list; catch(SQLException e) e.printStackTrace(); finally dgs.closeConnection(rs, ps, conn); returnnull; publicint getRowCount() conn = getCon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论