博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页操作
阅读量:5885 次
发布时间:2019-06-19

本文共 6448 字,大约阅读时间需要 21 分钟。

1、一般先封装一个用来显示分页的vo类

public class PageBean
{ //当前页 private int currentPage; //当前页显示的条数 private int currentCount; //总条数 private int totalCount; //总页数 private int totalPage; //每页显示的数据 private List
productList = new ArrayList
(); public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getCurrentCount() { return currentCount; } public void setCurrentCount(int currentCount) { this.currentCount = currentCount; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List
getProductList() { return productList; } public void setProductList(List
productList) { this.productList = productList; }}

Jsp

Servlet

//获得你想跳的页码 如果第一次访问列表,则currentPageStr为空,默认第一页String currentPageStr = request.getParameter("currentPage");if(currentPageStr==null) currentPageStr="1";int currentPage = Integer.parseInt(currentPageStr);//默认每页显示12条int currentCount = 12;PageBean
pageBean = null;try { pageBean = service.findPageBean(currentPage,currentCount);} catch (SQLException e) { e.printStackTrace();}request.setAttribute("pageBean", pageBean);request.getRequestDispatcher("/product_list.jsp").forward(request, response);

Service

//分页操作public PageBean findPageBean(int currentPage,int currentCount) throws SQLException  {    ProductDao dao = new ProductDao();        //目的:就是想办法封装一个PageBean 并返回    PageBean pageBean = new PageBean();    //1、当前页 currentPage;    pageBean.setCurrentPage(currentPage);    //2、当前页显示的条数 currentCount;    pageBean.setCurrentCount(currentCount);    //3、总条数 totalCount;    int totalCount = dao.getTotalCount();    pageBean.setTotalCount(totalCount);    //4、总页数 totalPage;    /*     * 总条数        当前页显示的条数    总页数     * 10                 4             3     * 11                 4             3     * 12                 4             3     * 13                 4             4     *      * 公式:总页数=Math.ceil(总条数/当前显示的条数)     *      */    int totalPage = (int) Math.ceil(1.0*totalCount/currentCount);    pageBean.setTotalPage(totalPage);    //5、每页显示的数据private List
productList = new ArrayList
(); /* * 页数与limit起始索引的关系 * 例如 每页显示4条 * 页数 起始索引 每页显示条数 * 1 0 4 * 2 4 4 * 3 8 4 * 4 12 4 * * 索引index = (当前页数-1)*每页显示的条数 * */ int index = (currentPage-1)*currentCount; List
productList = dao.findProductListForPageBean(index,currentCount); pageBean.setProductList(productList); return pageBean;}

Dao

//获得全部的商品条数public int getTotalCount() throws SQLException {    QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());    String sql = "select count(*) from product";    Long query = (Long) runner.query(sql, new ScalarHandler());    return query.intValue();}//获得分页的商品数据public List
findProductListForPageBean(int index,int currentCount) throws SQLException { QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from product limit ?,?"; return runner.query(sql, new BeanListHandler
(Product.class), index,currentCount);}

另一种封装PageBean的方法

public class PageBean {    private Integer currentPage;    private Integer pageSize;    private Integer totalCount;    private Integer totalPage;    private List list;        public PageBean(Integer currentPage, Integer pageSize, Integer totalCount) {                this.currentPage = currentPage;        this.pageSize = pageSize;        this.totalCount = totalCount;                if(this.currentPage == null){            this.currentPage = 1;        }                if(this.pageSize == null){            this.pageSize = 3;        }                this.totalPage = (this.totalCount+this.pageSize-1)/this.pageSize;                if(this.currentPage < 1){            this.currentPage = 1;        }                if(this.currentPage > this.totalPage){            this.currentPage = this.totalPage;        }    }        public int getStart(){        return (this.currentPage-1)*this.pageSize;    }        public Integer getCurrentPage() {        return currentPage;    }    public void setCurrentPage(Integer currentPage) {        this.currentPage = currentPage;    }    public Integer getPageSize() {        return pageSize;    }    public void setPageSize(Integer pageSize) {        this.pageSize = pageSize;    }    public Integer getTotalCount() {        return totalCount;    }    public void setTotalCount(Integer totalCount) {        this.totalCount = totalCount;    }    public Integer getTotalPage() {        return totalPage;    }    public void setTotalPage(Integer totalPage) {        this.totalPage = totalPage;    }    public List getList() {        return list;    }    public void setList(List list) {        this.list = list;    }    }

 

转载于:https://www.cnblogs.com/ms-grf/p/7234117.html

你可能感兴趣的文章
模块化服务规范——OSGI
查看>>
劣质代码评析——猜数字问题(上)
查看>>
纸上谈兵: 栈 (stack)
查看>>
Windows phone8 基础篇(三) 常用控件开发
查看>>
Oracle学习笔记之五,Oracle 11g的PL/SQL入门
查看>>
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
考拉消息中心消息盒子处理重构(策略模式)
查看>>
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>
【d3.js v4基础】过渡transition
查看>>