javaee 分页功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 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("&nbsp;&nbsp<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("&nbsp;&nbsp<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);
}

亲测可用
我认为分页这只是其中的一种方法,希望后面能学到更好的方法。

猜你喜欢

转载自blog.csdn.net/qq_23013309/article/details/79375575