JavaWeb分页的实现代码实例

 更新时间:2019年12月25日 09:05:40   作者:RooK13  
这篇文章主要介绍了JavaWeb分页的实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了JavaWeb分页的实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

分页的分类

分页的实现分为真分页和假分页两种。

1.真分页(物理分页):

实现原理: SELECT * FROM xxx [WHERE...] LIMIT ?, 10;

第一个参数是开始数据的索引位置

10是要查询多少条数据,即每页显示的条数

优点: 不会造成内存溢出

缺点: 翻页的速度比较慢

2.假分页(逻辑分页):

实现原理: 一次性将所有的数据查询出来放在内存之中,每次需要查询的时候就直接从内存之中去取出相应索引区间的数据

优点: 分页的速度比较快

缺点: 可能造成内存溢出

分页的一些术语:

  • -- 数据总条数: totalCount : select count(1) from t_user;
  • -- 每页显示条数:pageSize
  • -- 总页数:totalPage
  • -- 当前页:currPage
  • -- 起始索引: startIndex

-- 通过当前页码查询第几页的数据

select * from t_user limit 0, 5; -- 页码 1
select * from t_user limit 5, 5; -- 页码 2
select * from t_user limit 10, 5; -- 页码 3

-- 公式:startIndex = (currPage - 1) * pageSize

-- 计算一共有多少页

-- 方法一:result = totalCount%pageSize,如果余数result为0,

-- totalPage = totalCount / pageSize

-- 如果余数result不为0,

-- totalPage = totalCount / pageSize + 1;

-- 方法二:totalPage = (totalCount + pageSize - 1) / pageSize

Pageing工具类

public class PaginationBean<T> {
  
  private List<T> dataList;
  
  private int currPage;
  
  private int totalPage;

  public List<T> getDataList() {
    return dataList;
  }

  public void setDataList(List<T> dataList) {
    this.dataList = dataList;
  }

  public int getCurrPage() {
    return currPage;
  }

  public void setCurrPage(int currPage) {
    this.currPage = currPage;
  }

  public int getTotalPage() {
    return totalPage;
  }

  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }
}

Servlet

@WebServlet("/showUserList")
public class ShowUserListServlet extends HttpServlet implements Servlet {
  
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String operation = request.getParameter("operation");
    String currPageStr = request.getParameter("currPage");
    int currPage = 0;
    
    IUserService userSevice = new UserServiceImpl();
    int totalPage = userSevice.getTotalPage();
    
    if ("首页".equals(operation) || operation == null || currPageStr == null || currPageStr.length() == 0) {
      
      currPage = 1;
    } else if ("上一页".equals(operation)) {
      
      currPage = Integer.parseInt(currPageStr) - 1;
      if (currPage <= 0) {
        currPage = 1;
      }
    } else if ("下一页".equals(operation)) {
      
      currPage = Integer.parseInt(currPageStr) + 1;
      if (currPage >= totalPage) {
        currPage = totalPage;
      }
    } else {
      
      currPage = totalPage;
    }
    
    List<TestUserBean> userList = userSevice.getUserListByCurrPage(currPage);
    
    PaginationBean<TestUserBean> pageBean = new PaginationBean<TestUserBean>();
    pageBean.setDataList(userList);
    pageBean.setCurrPage(currPage);
    pageBean.setTotalPage(totalPage);
    
    request.setAttribute("page", pageBean);
    
    request.getRequestDispatcher("/userList.jsp").forward(request, response);
  }

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }

}

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%-- 引入JSTL --%>  
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
  table {
    border-collapse: collapse;
  }
</style>
</head>
<body>
  <table border="1">
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>密码</th>
      <th>身份证号</th>
    </tr>
    <c:forEach items="${page.dataList }" var="user">
      <tr>
        <td>${user.id }</td>
        <td>${user.name }</td>
        <td>${user.pwd }</td>
        <td>${user.idCard }</td>
      </tr>
    </c:forEach>
  </table>
  <span>第${page.currPage }页/共${page.totalPage }页</span>
  <br>
  <br>
  <form action="showUserList" method="get">
    <input type="submit" name="operation" value="首页">
    <input type="submit" name="operation" value="上一页">
    <input type="submit" name="operation" value="下一页">
    <input type="submit" name="operation" value="尾页">
    
    <input type="hidden" name="currPage" value="${page.currPage }">
  </form>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一篇文章带你入门java注解

    一篇文章带你入门java注解

    这篇文章主要介绍了Java注解详细介绍,本文讲解了Java注解是什么、Java注解基础知识、Java注解类型、定义Java注解类型的注意事项等内容,需要的朋友可以参考下
    2021-08-08
  • 基于mybatis-plus timestamp返回为null问题的排除

    基于mybatis-plus timestamp返回为null问题的排除

    这篇文章主要介绍了mybatis-plus timestamp返回为null问题的排除,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring @Conditional注解示例详细讲解

    Spring @Conditional注解示例详细讲解

    @Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean,这篇文章主要介绍了Spring @Conditional注解示例详细讲解,需要的朋友可以参考下
    2022-11-11
  • Java将CSV的数据发送到kafka的示例

    Java将CSV的数据发送到kafka的示例

    这篇文章主要介绍了Java将CSV的数据发送到kafka得示例,帮助大家更好得理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • Spring细数两种代理模式之静态代理和动态代理概念及使用

    Spring细数两种代理模式之静态代理和动态代理概念及使用

    代理是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。可以不修改目标对象,对目标对象功能进行拓展。在我们学习Spring的时候就会发现,AOP(面向切面编程)的底层就是代理
    2023-02-02
  • java虚拟机指令dup详解

    java虚拟机指令dup详解

    这篇文章主要为大家详细介绍了java虚拟机指令dup,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Xml中使用foreach遍历对象实现代码

    Xml中使用foreach遍历对象实现代码

    这篇文章主要介绍了Xml中使用foreach遍历对象实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • iReport简单使用方法图文教程

    iReport简单使用方法图文教程

    iReport是一个能够创建复杂报表的开源项目,它100%使用Java语言编写,是目前全球最为流行的开源报表设计器,由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表
    2021-10-10
  • Java实现Redis哨兵的示例代码

    Java实现Redis哨兵的示例代码

    这篇文章主要介绍了Java实现Redis哨兵的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java语言描述MD5加密工具类实例代码

    Java语言描述MD5加密工具类实例代码

    这篇文章主要介绍了Java语言描述MD5加密工具类实例代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12

最新评论