版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23013309/article/details/79375575
在javaee开发中,在数据量很多的时候,就要用分页来显示,否则阅读体验相当的差。
下面的分页方法是其中的一种,我相信应该还有其他的分页方法。
分页功能的实现,底层是利用数据库来实现的,在sql型数据库中,分页查询数据的语句如下:
select * from tb_example limit start, amount;
start: 从哪条数据开始查询
amount: 共查询多少条数据
前端页面在刷新时,需要把这是第几页这条信息传入后台。
后台需要表示的页面信息有,这是第几页,每页显示的数据,这些可以封装在一个javabean中。
分页显示的前端html代码由后台生成。
如下示例:
//这是表示页面的信息的PageBean public class PageBean { private int page; // 这是第几页 private int pageSize; // 每页显示的数据数量 private int start; // 从哪条数据开始显示 public PageBean(int page, int pageSize) { super(); this.page = page; this.pageSize = pageSize; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getStart() { return (page-1)*pageSize; } }
/** * 生成分页代码 * @param totalPage * @param pageBean * @return */ private String getPageCode(int totalPage, PageBean pageBean){int page = pageBean.getPage(); int pageAmount = Integer.parseInt(PropertiesUtil.getProperties("pageAmount")); StringBuffer pageCode = new StringBuffer(); if(page == 1){ for(int i=1; i <= pageAmount ; i++){ pageCode.append("  <a href='list.do?page=" + (i == 1?"start":i) + "'>" + i + "</a>"); } }else{ int i = page -1; int j = page + pageAmount - 2; if(page + 5 > totalPage ) { i = totalPage - 5; j = totalPage; } for(; i <= j; i++){ pageCode.append("  <a href='list.do?page=" + (i == totalPage?"end":i) + "'>" + i + "</a>"); } } return pageCode.toString(); } public void doPost(HttpServletRequest request, HttpServletResponse)throws Exception{ //获取分页大小 int pageSize = Integer.parseInt(PropertiesUtil.getProperties("pageSize")); //查询数据总数 int total = userService.total(); //计算页面总数 int totalPage = total / pageSize + 1; //获取页面信息 String pageStr = request.getParameter("page"); int page = 0; if(StringUtils.isPrimary(pageStr)) page = 1; else if(StringUtils.isEnd(pageStr)) page = totalPage; else page = Integer.parseInt(pageStr); PageBean pageBean = new PageBean(page, pageSize); //分页代码生成 String pageCode = getPageCode(totalPage, pageBean); //查询指定的数据 List<User> users = userService.listUsers(pageBean); String mainPage = "/pages/front/commons/listusers.jsp"; request.setAttribute("users", users); request.setAttribute("mainPage", mainPage); request.setAttribute("pageCode", pageCode); request.getDispatcher("/WEB-INF/index.jsp").forward(request, response); }
亲测可用
我认为分页这只是其中的一种方法,希望后面能学到更好的方法。