从数据库查询数据,固定网页页码的条数,并始终居中
我们数据库的信息很多,我们在网页上面显示,不可能显示所有的页面,一般只会显示当前的10页,且显示的当前页码要放在中间。效果如下:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
分析图:
Servlet的代码:与客户端交互的
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取参数 String pageNumberStr = request.getParameter("pageNumber"); String pageSizeStr = request.getParameter("pageSize"); //设置初始值,可以使得就算客户端没有传也可以实现功能 Integer pageNumber = 1; Integer pageSize = 10; //如果客户端传了值,就是要客户端的值 if (pageNumberStr != null && !"".equals(pageNumberStr)) { pageNumber = Integer.parseInt(pageNumberStr); } if (pageSizeStr != null && !"".equals(pageSizeStr)) { pageSize = Integer.parseInt(pageSizeStr); } PageBean pageBean = userService.page(pageNumber, pageSize); request.setAttribute("pageBean", pageBean); request.getRequestDispatcher("list.jsp").forward(request, response); }
service的代码:处理显示在页面的的信息和页码
public PageBean page(Integer pageNumber, Integer pageSize) { //1、获取到页码的信息集合 //得到起始索引 int index = (pageNumber - 1) * pageSize; List<User> userList = userDao.page(index, pageSize); pageBean.setUserList(userList);//添加到PageBean中 //2、得到页码,由于页码由客户端传过来了,直接使用 pageBean.setPageNumber(pageNumber); //3、求出总页码 //算出用户信息的总条数 Integer count = userDao.count(); //算出总页码 int pageCount = (int) Math.ceil(count * 1.0 / pageSize); pageBean.setPageCount(pageCount); if (pageNumber <= 5) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; pageBean.setArr(arr); } if (pageNumber > 5 && pageNumber < pageCount - 5) { int i = pageNumber; int[] arr = {i - 5, i - 4, i - 3, i - 2, i - 1, i, i + 1, i + 2, i + 3, i + 4}; pageBean.setArr(arr); } if (pageNumber >= pageCount - 5) { int i = pageCount; int[] arr = {i - 9, i - 8, i - 7, i - 6, i - 5, i - 4, i - 3, i - 2, i - 1, i}; pageBean.setArr(arr); } return pageBean; }
dao的代码:处理SQL语句
public List<User> page(int index, Integer pageSize) { return jdbcTemplate.query("select * from tab_user limit ?, ?", new BeanPropertyRowMapper<>(User.class), index, pageSize); } public Integer count() { return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM tab_user", Integer.class); }
最终在页面上的显示效果:

更多精彩