文档详情

SSH分页解决方案

lisu****2020
实名认证
店铺
DOC
62.01KB
约4页
文档ID:157683754
SSH分页解决方案_第1页
1/4

SSH分页解决方案1、提供通用的分页Beanpublic class PageBean { private int currentPage=1; // 当前页 private int previousPage=0; // 上一页 private int nextPage=2; // 下一页 private int firstPage=1; // 首页 private int lastPage; // 末页 private int perPage = 4; // 每页记录数 private int allRecords; // 总记录数 private int allPage; // 总页数 //省略setter和getter方法 /** * 根据当前页和总记录数初始化PageBean的各个参数 * @param pageBean 初始化之前的PageBean * @param totalSize 总记录数 * @return 初始化之后的PageBean */ public PageBean init(PageBean pageBean,int totalSize) { 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);// 设置上一页数; else pageBean.setPreviousPage(pageBean.getCurrentPage() - 1); if (pageBean.getCurrentPage() == pageBean.getAllPage()) pageBean.setNextPage(pageBean.getAllPage());// 设置下一页数; else pageBean.setNextPage(pageBean.getCurrentPage() + 1); return pageBean; }}2、Action中进行分页处理在Action中增加分页处理的相关属性,并修改相应方法public class UserAction extends ActionSupport { private int page=1; private PageBean pageBean = new PageBean(); public PageBean getPageBean() { return pageBean; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public String showAllUser(){ //指定当前页 pageBean.setCurrentPage(page); //调用业务层进行分页查询 userList = this.userBiz.findAllUser(pageBean); return SUCCESS; }}注意:Ø page属性用于接收JSP页面的用户的页号选择。

Ø pageBean用来存储分页数据,初始化各个参数Ø PageBean需要手动实例化PageBean pageBean = new PageBean();3、业务层进行分页处理public class UserBizImpl implements UserBiz { private CommDao commDao; public void setCommDao(CommDao commDao) { mDao = commDao; } public List findAllUser(PageBean pageBean) { //获取总记录数 String hql="select count(*) from User"; long ltotalSize =(Long)mDao.search(hql).get(0); int totalSize= (int)ltotalSize; //根据当前页和总记录数初始化PageBean pageBean = pageBean.init(pageBean, totalSize); //获取当前页数据 int maxResults =pageBean.getPerPage(); int firstResult=(pageBean.getCurrentPage()-1)*maxResults; hql="from User"; return mDao.search(hql,firstResult,maxResults); }}注意:具体的分页操作建议放在业务层进行,而不是Action或DAO中。

4、DAO层进行分页处理public class CommDaoImpl extends HibernateDaoSupport implements CommDao{public Listsearch(int firstResult,int maxResults,String hql){ return super.getSession().createQuery(hql) .setFirstResult(firstResult) .setMaxResults(maxResults) .list(); }}注意:只查询一页数据;可以升序或降序查询5、页面中进行分页处理 第页 每页 条记录 共页 共首页上一页下一页尾页 6、扩展1、根据首页、上一页、下一页、尾页根据当前页号隐藏或灰色显示2、页面增加下拉列表,直接选择页号3、每页显示记录数可以变化4、对符合查询条件的记录(而不是全部记录)进行分页处理5、将分页数据作为PageBean属性存在: private List pageData;7、其他解决思路1、显示分页编号,最多显示10个页面编号,显示当前页号前五后四个页面编号2、页面显示内容通过专门Java类通过字符串拼接生成,然户直接在页面输出7、利用现有技术分页1、Display Tag Lib 是一个标签库,用来处理jsp 网页上的Table,功能非常强,可以对的Table 进行分页、数据导出、分组、对列排序等操作。

2、Pager-taglib 2.0 是一套分页标签库,可以灵活地实现多种不同风格的分页导航页面,并且可以很好的与服务器分页逻辑分离这样一套标签库,你想你的分页效果怎样就能怎样 pager-taglib,可以方便的帮我们完成分页的功能,当然大家不要担心他的效率,它支持每次从数据库中只取出要显示的数据,这样可以减少数据库的压力。

下载提示
相关文档
正为您匹配相似的精品文档