Java分页查询中分页的分页

Java分页查询中分页的分页

接上次分页,这次主要对总页数进行分页,使它每次显示10个。

这里写图片描述
在PageServlet2中加

// //起始页+结束页///
            // showStart ,showEnd
            int showStart = 0;// 从第几个开始显示
            int showEnd = 0;// 到哪结束
            int showSize = 10; // 一共显示10个
            int pageCount = Integer.parseInt("" + res.get("pageCount"));
            if (pageCount <= showSize) {
                showStart = 1;
                showEnd = pageCount;
            } else {
                // 计算开始
                if (pageNo <= (showSize / 2 + 1)) {
                    showStart = 1;
                    showEnd = showSize;
                } else {
                    showStart = pageNo - (showSize / 2);
                }
                // 计算结束
                showEnd = showStart + showSize - 1;
                if (showEnd > pageCount) {
                    showEnd = pageCount;
                    showStart = showEnd - (showSize - 1);
                }
            }

            request.setAttribute("showStart", showStart);
            request.setAttribute("showEnd", showEnd);

如果要加入查询

要注意:每次查询的结果要存储到一个新的值对象,用来封装查询数据,
这是实现类

public class PageDaoJdbc2 implements PageDAO2 {

    @Override
public Map<String, Object> query(Integer pageNo, Stud stud)
            throws Exception {
        Map<String, Object> result = new HashMap<String, Object>();
        // 每一页显示10个数据
        int pageSize = 10;
        // 查询表数据
        int stratN = (pageNo - 1) * pageSize;
        // 计算总页数 总页数= 行数 / pageSize +(行数%pageSize==0 ? 0:1)
        // 总行数
        String sql = "SELECT COUNT(1) FROM stud where 1=1 ";
        String sql2 = "select * from stud  where 1=1 ";
        if (stud.getId() != null && stud.getId().trim().length() > 0) {
            sql = sql + " and id like '%" + stud.getId().trim() + "%'";
            sql2 = sql2 + " and id like '%" + stud.getId().trim() + "%'";
        }
        if (stud.getName() != null && stud.getName().trim().length() > 0) {
            sql = sql + " and id like '%" + stud.getName().trim() + "%'";
            sql2 = sql2 + " and id like '%" + stud.getName().trim() + "%'";
        }



        QueryRunner run = new QueryRunner(C3p0Pool.getDataSource());
        int rows = Integer.parseInt("" + run.query(sql, new ScalarHandler()));
        int pageCount = rows / pageSize + (rows % pageSize == 0 ? 0 : 1);
        result.put("pageCount", pageCount);// 封装总页数

        // 查询表数据

        sql2= sql2+ " limit " + stratN + "," + pageSize ;
        List<Map<String, Object>> datas = run.query(sql, new MapListHandler());

        result.put("datas", datas);
        return result;
    }
    }

show2.jsp中

<c:set value="${res.pageCount}" var="pageCount"></c:set>
    <c:if test="${res.currentPage != 1}">
        <a href="<c:url value='/PageServlet2?page=${res.currentPage-1}'/>">上一页</a> &nbsp;

        </c:if>

    <c:forEach begin="${showStart }" end="${showEnd}" var="idx">

        <c:if test="${res.currentPage == idx}">
            ${idx}&nbsp;
        </c:if>

        <c:if test="${res.currentPage != idx}">
            <a href="<c:url value='/PageServlet2?page=${idx}'/>">${idx}</a>    &nbsp;
        </c:if>
    </c:forEach>
    <c:if test="${res.currentPage != pageCount}">
        <a href="<c:url value='/PageServlet2?page=${res.currentPage+1}'/>">下一页</a> &nbsp;
        </c:if>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值