web分页的步骤

分页类的内容

分页类是每次分页请求返回给前端的一个对象

  • pageNo 前端传来的的当前页码(客户端传过来)
  • pageTotal 总共的页码数量
  • pageTotalCount 总记录数(要分页显示的信息总记录数)
  • pageSize 每页显示数量(客户端传过来)
  • items 当前页的数据集合

pageTotalCount->由sql语句count(*)获得
pageTotal->总记录数/每页大小,如果有余数则加1页
items->由sql语句select * from 表名 limit begin,pageSize
begin=(pageNo-1)*pageSize

总体流程
在这里插入图片描述

页数显示的几种情况
需求:显示 5 个连续的页码,而且当前页码在中间。除了当前页码之外,每个页码都可以点击跳到指定页。
情况 1:如果总页码小于等于 5 的情况,页码的范围是:1-总页码
1 页 1
2 页 1,2
3 页 1,2,3
4 页 1,2,3,4
5 页 1,2,3,4,5
情况 2:总页码大于 5 的情况。假设一共 10 页
小情况 1:当前页码为前面 3 个:1,2,3 的情况,页码范围是:1-5.
【1】2,3,4,5
1【2】3,4,5
1,2【3】4,5
小情况 2:当前页码为最后 3 个,8,9,10,页码范围是:总页码减 4 - 总页码

6,7【8】9,10
6,7,8【9】10
6,7,8,9【10】

小情况 3:4,5,6,7,页码范围是:当前页码减 2 - 当前页码加 2

2,3,4,5,6
3,4,5,6,7
4,5,6,7,8
5,6,7,8,9

 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div id="page_nav">
    <c:if test="${requestScope.page.pageNo>1}">
        <a href="${requestScope.page.url}&pageNo=1">首页</a>
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageNo-1}">上一页</a>
    </c:if>

    <c:choose>
    <%--情况 1:如果总页码小于等于 5 的情况,页码的范围是:1-总页码--%>
        <c:when test="${requestScope.page.pageTotal<=5}">
            <c:set var="begin" value="1" />
            <c:set var="end"  value="${requestScope.page.pageTotal}" />
        </c:when>
	<%--情况 2:总页码大于 5 的情况--%>
        <c:when test="${requestScope.page.pageTotal>5}">
            <c:choose>
    	<%--小情况 1:当前页码为前面 3 个:123 的情况,页码范围是:1-5.--%>
                <c:when test="${requestScope.page.pageNo<=3}">
                    <c:set var="begin" value="1"/>
                    <c:set var="end" value="5"/>
                </c:when>
		<%--小情况 2:当前页码为最后 3 个,8910,页码范围是:总页码减 4 - 总页码--%>
                <c:when test="${requestScope.page.pageNo>=requestScope.page.pageTotal-3}">
                    <c:set var="begin" value="${requestScope.page.pageTotal-4}"/>
                    <c:set var="end" value="${requestScope.page.pageTotal}"/>
                </c:when>
		<%--小情况 34567,页码范围是:当前页码减 2 - 当前页码加 2--%>
                <c:otherwise>
                    <c:set var="begin" value="${requestScope.page.pageNo-2}"/>
                    <c:set var="end" value="${requestScope.page.pageNo+2}"/>
                </c:otherwise>
            </c:choose>

        </c:when>
    </c:choose>



    <c:forEach begin="${begin}" end="${end}" var="i" >
        <c:if test="${requestScope.page.pageNo==i}">
            [${i}]
        </c:if>
        <c:if test="${requestScope.page.pageNo!=i}">
            <a href="${requestScope.page.url}&pageNo=${i}">${i}</a>
        </c:if>
    </c:forEach>




    <c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal}">
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageNo+1}">下一页</a>
        <a href="${requestScope.page.url}&pageNo=${requestScope.page.pageTotal}">末页</a>
    </c:if>

    共${requestScope.page.pageTotal}页,${requestScope.page.pageTotalCount}条记录 到第<input value="${requestScope.page.pageNo}" name="pn" id="pn_input"/><input id="searchPageBtn" type="button" value="确定">

    <script>
        $(function () {
            $("#searchPageBtn").click(function () {
                var pageNo=$("#pn_input").val();

                location.href="${basePath}${requestScope.page.url}&pageNo="+pageNo;
            })
        })
    </script>
</div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web 实现分页查询通常需要以下步骤: 1. 在数据库查询总记录数。 2. 根据当前页码和每页显示的记录数计算出需要查询的记录的起始位置。 3. 在数据库查询需要显示的记录。 4. 将查询结果封装成一个 JavaBean 或者 List 的形式,传递给前端页面。 5. 在前端页面上显示查询结果,并且生成分页导航栏。 以下是一个简单的分页查询实现的代码示例: ``` // 获取当前页码和每页显示的记录数 int currentPage = Integer.parseInt(request.getParameter("currentPage")); int pageSize = Integer.parseInt(request.getParameter("pageSize")); // 在数据库查询总记录数 int totalCount = dao.getTotalCount(); // 计算需要查询的记录的起始位置 int start = (currentPage - 1) * pageSize; // 在数据库查询需要显示的记录 List<User> userList = dao.getUserList(start, pageSize); // 将查询结果封装成一个 JavaBean 或者 List 的形式,传递给前端页面 request.setAttribute("userList", userList); // 在前端页面上显示查询结果,并且生成分页导航栏 int totalPage = (totalCount + pageSize - 1) / pageSize; String pageNav = PageUtils.getPageNav(currentPage, totalPage); request.setAttribute("pageNav", pageNav); ``` 其,`dao` 是数据访问对象,`User` 是一个 JavaBean 类,`PageUtils` 是一个工具类,用来生成分页导航栏。在 `dao` ,`getTotalCount` 方法用来获取总记录数,`getUserList` 方法用来获取需要显示的记录。在前端页面上,通过 `userList` 和 `pageNav` 来显示查询结果和分页导航栏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值