您好,欢迎访问三七文档
SSH分页解决方案1、提供通用的分页BeanpublicclassPageBean{privateintcurrentPage=1;//当前页privateintpreviousPage=0;//上一页privateintnextPage=2;//下一页privateintfirstPage=1;//首页privateintlastPage;//末页privateintperPage=4;//每页记录数privateintallRecords;//总记录数privateintallPage;//总页数//省略setter和getter方法/***根据当前页和总记录数初始化PageBean的各个参数*@parampageBean初始化之前的PageBean*@paramtotalSize总记录数*@return初始化之后的PageBean*/publicPageBeaninit(PageBeanpageBean,inttotalSize){pageBean.setAllRecords(totalSize);//设置总记录条数;pageBean.setAllPage(totalSize%pageBean.getPerPage()==0?totalSize/pageBean.getPerPage():totalSize/pageBean.getPerPage()+1);//设置总页数pageBean.setFirstPage(1);//设置首页数;pageBean.setLastPage(pageBean.getAllPage());//设置末页数;if(pageBean.getCurrentPage()==1)pageBean.setPreviousPage(1);//设置上一页数;elsepageBean.setPreviousPage(pageBean.getCurrentPage()-1);if(pageBean.getCurrentPage()==pageBean.getAllPage())pageBean.setNextPage(pageBean.getAllPage());//设置下一页数;elsepageBean.setNextPage(pageBean.getCurrentPage()+1);returnpageBean;}}2、Action中进行分页处理在Action中增加分页处理的相关属性,并修改相应方法publicclassUserActionextendsActionSupport{privateintpage=1;privatePageBeanpageBean=newPageBean();publicPageBeangetPageBean(){returnpageBean;}publicintgetPage(){returnpage;}publicvoidsetPage(intpage){this.page=page;}publicStringshowAllUser(){//指定当前页pageBean.setCurrentPage(page);//调用业务层进行分页查询userList=this.userBiz.findAllUser(pageBean);returnSUCCESS;}}注意:page属性用于接收JSP页面的用户的页号选择。pageBean用来存储分页数据,初始化各个参数。PageBean需要手动实例化PageBeanpageBean=newPageBean();3、业务层进行分页处理publicclassUserBizImplimplementsUserBiz{privateCommDaocommDao;publicvoidsetCommDao(CommDaocommDao){this.commDao=commDao;}publicListUserfindAllUser(PageBeanpageBean){//获取总记录数Stringhql=selectcount(*)fromUser;longltotalSize=(Long)this.commDao.search(hql).get(0);inttotalSize=(int)ltotalSize;//根据当前页和总记录数初始化PageBeanpageBean=pageBean.init(pageBean,totalSize);//获取当前页数据intmaxResults=pageBean.getPerPage();intfirstResult=(pageBean.getCurrentPage()-1)*maxResults;hql=fromUser;returnthis.commDao.search(hql,firstResult,maxResults);}}注意:具体的分页操作建议放在业务层进行,而不是Action或DAO中。4、DAO层进行分页处理publicclassCommDaoImplextendsHibernateDaoSupportimplementsCommDao{publicListMoveBookingsearch(intfirstResult,intmaxResults,Stringhql){returnsuper.getSession().createQuery(hql).setFirstResult(firstResult).setMaxResults(maxResults).list();}}注意:只查询一页数据;可以升序或降序查询5、页面中进行分页处理trtdbgcolor=#00ffffcolspan=10align=center第s:propertyvalue=pageBean.currentPage/页每页s:propertyvalue=pageBean.perPage/条记录共s:propertyvalue=pageBean.allPage/页共s:propertyvalue=pageBean.allRecords/条ahref=showAll.action?page=s:propertyvalue='pageBean.firstPage'/首页/aahref=showAll.action?page=s:propertyvalue='pageBean.previousPage'/上一页/aahref=showAll.action?page=s:propertyvalue='pageBean.nextPage'/下一页/aahref=showAll.action?page=s:propertyvalue='pageBean.lastPage'/尾页/a/td/tr6、扩展1、根据首页、上一页、下一页、尾页根据当前页号隐藏或灰色显示2、页面增加下拉列表,直接选择页号3、每页显示记录数可以变化4、对符合查询条件的记录(而不是全部记录)进行分页处理5、将分页数据作为PageBean属性存在:privateListpageData;7、其他解决思路1、显示分页编号,最多显示10个页面编号,显示当前页号前五后四个页面编号2、页面显示内容通过专门Java类通过字符串拼接生成,然户直接在页面输出7、利用现有技术分页1、DisplayTagLib是一个标签库,用来处理jsp网页上的Table,功能非常强,可以对的Table进行分页、数据导出、分组、对列排序等操作。2、Pager-taglib2.0是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离。这样一套标签库,你想你的分页效果怎样就能怎样。pager-taglib,可以方便的帮我们完成分页的功能,当然大家不要担心他的效率,它支持每次从数据库中只取出要显示的数据,这样可以减少数据库的压力。
本文标题:SSH分页解决方案
链接地址:https://www.777doc.com/doc-2850538 .html