我们数据库的信息很多,我们在网页上面显示,不可能显示所有的页面,一般只会显示当前的10页,且显示的当前页码要放在中间。效果如下:

从数据库查询数据,固定网页页码的条数,并始终居中 随笔 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

分析图:

 

 从数据库查询数据,固定网页页码的条数,并始终居中 随笔 第2张

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);
    }

 

最终在页面上的显示效果:

从数据库查询数据,固定网页页码的条数,并始终居中 随笔 第3张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄