servlet如何实现分页技术

本文介绍了Java Servlet中物理分页和逻辑分页的原理及优缺点,重点讲解了物理分页的实现,包括使用JDBC的滚动结果集和数据库特定的分页操作,如MySQL的`LIMIT`。同时,分析了分页所需的关键参数,如页码、每页条数、总条数和总页数的计算,并提出了在JSP中如何通过Servlet进行分页展示的思路。
摘要由CSDN通过智能技术生成

Java中常见的分页类别有物理分页和逻辑分页。对于一般的model项目可以使用逻辑分页,对于数据比较多的,建议使用物理分页。

  • 物理分页
    只从数据库中查询出当前页面的数据,不占用很多内存,但效率比较低。
  • 逻辑分页
    从数据库中找到所有的数据, 存储到内存当中。展示的页面数据直接从内存中间读取,效率高,但是占用很大内存。

实现代码

物理分页的实现
1.使用jdbc完成,使用滚动结果集,可以跨数据库,但是性能低。
2.使用数据库本身的分页操作。也就是限定返回条数。
MySQL:limit
sqlservlet:top
oracle:rownum
使用以上数据库代码编写,例如limit
select * from 表 limit m,n;
m:从第几行开始。
n:查询几条。
例如,每页显示6条,查询第二页的数据
select * from 表 limit (页码-1)*6,6;
-

分页分析

1,页码自定义,默认第一页
2,每页条数,自定义
3,总条数,count(*)查询
4,总页数, 总页数=总条数/每页条数的向上取整
(总条数%每页条数==0?总条数/每页条数:总条数/每页条数+1)
5,当前页面数据,

代码分析

jsp:

    <a href="${pageContext.request.contextPath}/findAllByPage">查看所有客户信息(分页展示)</a><br

servlet完成分页
可以先建立一个bean来保存分页所要显示的数据,包括页面数据,页码,总页数等。可以建立一个bean来封装这些数据。


public class PageBean {

    private int pageNum; // 页码
    private int currentPage; // 每页条数
    private int totalPage; // 总页数
    private int totalCount; // 总条数
    private List<Customer> cs; // 每页数据
    // 分页操作
    // pageNum 页码
    // currentPage 每页条数
    public PageBean findByPage(int pageNum, int currentPage)
            throws SQLException {

        PageBean pb = new PageBean();

        List<Customer> cs = dao.findByPage(pageNum, currentPage);

        // 查询总条数:
        int totalCount = dao.findAllCount();

        // 得到总页数
        int totalPage = (int) Math.ceil(totalCount * 1.0 / currentPage);

        pb.setTotalCount(totalCount); // 封装总条数
        pb.s
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单从表现层来说分页不是一个复杂的工作,稍微理一下思路,处于不同competence level的同学应该都能自己搞出来。 以上面的文章列表分页为例,我觉得分页有两点重要的, 一是:分页我们必须首先自己搞清楚,文章总数、每页显示文章数(页大小)、页数 二是:如何做好页脚的分页导航条 实际应用中,文章总数这个值我们从数据库可以得到;每页显示的文章数即分页的页大小可以自己定义;页数我们可以通过下面的个表达式简单得出。 假设: int pageSize = 10; //分页大小 int totalPosts = PagingDAO.entryList.size(); //总文章数 int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数 每页的文章怎么取出来? 知道分页的大小之后,我们生成了页好的选取下拉框,每次选择第几页的时候,都会向Servlet传递当前选择页号的参数,这样Servlet调用后面的DAO相应的方法,取得文章列表信息,再回传到JSP以供显示。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> page Size : ${pageSize} <br /> Total Posts: ${totalPosts} <br /> Total Pages: ${totalPages} <br /> Current Page: ${pageNumber} <hr /> <table> <thead> <tr align="center"> <td width="10%">Article ID</td> <td width="70%">Article Title</td> <td colspan="3">Actions</td> </tr> </thead> <tbody> <c:forEach items="${entryList}" var="entry"> <tr align="center"> <td>${entry.entryID}</td> <td>${entry.title}</td> <td><a href="viewEntry?entryID=${entry.entryID}">View</a></td> <td><a href="editEntry?entryID=${entry.entryID}">Edit</a></td> <td><a href="deleteEntry?entryID=${entry.entryID}">Delete</a></td> </tr> </c:forEach> </tbody> <tfoot> <tr align="center"> <td colspan="5"> <jsp:include page="paging_footer.jsp"></jsp:include> </td> </tr> </tfoot> </table> <hr/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值