JavaWeb中的简单分页完整代码(推荐)

下面我来详细讲解JavaWeb中的简单分页完整代码攻略。

1. 原理简介

JavaWeb中的简单分页,主要通过对数据集进行分页处理。具体实现可以通过sql语句进行分页查询,也可以在页面上进行数据分页显示。

其中,采用sql语句进行分页查询的实现方式主要包含三个关键点:

  1. 分页参数计算
  2. sql语句拼接
  3. 分页结果返回

2. 实现步骤

2.1 分页参数计算

分页参数计算主要是针对当前页码、每页显示记录数以及总记录数三个参数进行计算,计算出分页所需要的参数信息。

以下是分页参数计算的具体步骤:

  1. 获取当前页码,判断当前页码是否超出总页数范围。如果超出,则将当前页码设置为最大页码。
  2. 获取每页显示记录数,默认设置每页显示10条记录。
  3. 获取总记录数total_num,计算总页数total_page:total_page = (total_num + page_size - 1) / page_size。
  4. 根据计算出来的分页参数信息返回结果。

示例代码:

//每页默认显示10条数据
int pageSize = 10;
//通过request对象获取当前页码参数
int currentPage = request.getParameter("pageNum")==null?1:Integer.parseInt(request.getParameter("pageNum"));
//设置当前页码不能小于1
if (currentPage <= 0) {
    currentPage = 1;
}
//获取总记录数,total_num表示从数据库返回的总记录数
int total_num = ...;
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//如果当前页码大于总页数,则将当前页码设置为最大页码
if (currentPage > totalPage) {
    currentPage = totalPage;
}

2.2 sql语句拼接

sql语句拼接主要是对查询sql语句进行改造,增加limit关键字和分页参数信息,实现对数据集的分页查询。

以下是sql语句拼接的具体步骤:

  1. 根据当前页码currentPage和每页显示记录数pageSize,计算limit关键字中的页码范围:start = (currentPage - 1) * pageSize。
  2. 拼接sql语句,增加limit关键字和分页参数信息:sql += " limit "+start+","+pageSize。

示例代码:

//先查询一次总记录数total_num,然后执行分页查询
String sql = "select * from user where ...";
//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//拼接sql语句
sql += " limit "+start+","+pageSize;

2.3 分页结果返回

分页结果返回主要是将分页查询的结果集,以及分页参数信息封装成PageBean对象,返回给前台页面进行展示。

以下是分页结果返回的具体步骤:

  1. 创建PageBean对象,封装分页查询结果集和分页参数信息。
  2. 将返回结果对象pageBean存储在request域中,供jsp页面获取。

示例代码:

//创建PageBean对象并封装分页信息及查询结果
PageBean<User> pageBean = new PageBean<User>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(userList);

//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("userList.jsp").forward(request, response);

3. 示例说明

下面通过两个示例来说明JavaWeb中的简单分页完整代码。

3.1 示例一

假设有一个user表,其表结构如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在需要对user表进行分页查询处理,每页默认显示10条记录。

以下是核心代码实现:

//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//进行sql查询
String sql = "select * from user limit "+start+","+pageSize;
//获取查询结果集
List<User> userList = userDao.queryForList(sql);
//查询总记录数
String countSql = "select count(*) from user";
int total_num = userDao.queryForInt(countSql);
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//封装成PageBean对象
PageBean<User> pageBean = new PageBean<User>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(userList);
//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("userList.jsp").forward(request, response);

3.2 示例二

假设有一个order表,其表结构如下:

CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_num` varchar(50) NOT NULL,
  `order_name` varchar(50) NOT NULL,
  `order_price` decimal(10,2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在需要根据订单价格order_price对order表进行分页查询处理,每页默认显示5条记录。

以下是核心代码实现:

//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//进行sql查询
String sql = "select * from order order by order_price limit "+start+","+pageSize;
//获取查询结果集
List<Order> orderList = orderDao.queryForList(sql);
//查询总记录数
String countSql = "select count(*) from order";
int total_num = orderDao.queryForInt(countSql);
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//封装成PageBean对象
PageBean<Order> pageBean = new PageBean<Order>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(orderList);
//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("orderList.jsp").forward(request, response);

4. 总结

JavaWeb中的简单分页完整代码,通过对分页参数计算、sql语句拼接以及分页结果返回的实现方式,可以方便地实现对数据集的分页查询处理。同时,具体实现中需要注意参数边界检查,以及sql注入等安全问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb中的简单分页完整代码(推荐) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • java 中冒泡、二分、快速算法详解

    Java 中冒泡、二分、快速算法详解 冒泡排序 冒泡排序是一种简单的排序算法,通过不断交换相邻元素的值,把最大或最小的元素逐步“浮”到数列的顶端或底端。具体流程如下: 比较相邻的两个元素,如果前一个元素大于后一个元素,则交换这两个元素的位置。 对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对。这样一轮排序过后,排在数列末尾的元素就是最大或最小的元素。…

    Java 2023年5月19日
    00
  • js对table的td进行相同内容合并示例详解

    下面是“js对table的td进行相同内容合并示例详解”的完整攻略: 1. 方案简介 在Web开发中,我们可以使用JavaScript操作HTML中的DOM元素,进而实现对table的td进行相同内容合并的功能。具体的实现思路是找到table中具有相同文本内容的td单元格,如果它们在同一行或同一列,则进行合并,从而达到优化表格展示的效果。 2. 示例1:按行…

    Java 2023年6月16日
    00
  • 批量上传Jar包到Maven私服的工具的方法

    下面是批量上传Jar包到Maven私服的工具的方法的完整攻略: 前置条件 确保已安装好Maven、Java和Git; 确保已创建好Maven私服; 确保已准备好需要上传的Jar包文件。 步骤一:克隆工具项目 使用Git命令或者在GitHub上下载项目源代码,并解压至本地。 git clone https://github.com/lilicoding/mav…

    Java 2023年5月20日
    00
  • Spring Cloud 使用 Resilience4j 实现服务熔断的方法

    Spring Cloud 使用 Resilience4j 实现服务熔断的方法 简介 在微服务架构中,服务之间的调用是通过网络通信实现的,当前服务如果调用其他服务时发生异常,这可能会导致雪崩效应,严重影响整个系统的稳定性和可用性。为了解决这个问题,可以引入服务熔断机制,当某个服务异常达到一定的阀值时,取消对该服务的调用,直接返回给调用方一个错误响应,从而减小对…

    Java 2023年5月19日
    00
  • 浅谈jsp EL表达式取值过程、page和pagecontext的区别

    下面我将详细讲解“浅谈jsp EL表达式取值过程、page和pagecontext的区别”的完整攻略,希望能对你有所帮助。 什么是EL表达式 EL表达式(Expression Language)是一个用于在JSP中获取数据的表达式语言,主要用于在JSP页面中引用和显示Java Bean中的属性值、参数、方法调用等。它的语法类似于JavaScript和PHP等…

    Java 2023年6月15日
    00
  • java使用命令行打包JAR

    下面是详细讲解Java使用命令行打包JAR的完整攻略: 一、JAR文件的概念 JAR(Java ARchive)文件是Java平台的标准打包文件,用于将多个类文件、资源文件以及META-INF目录打包为一个文件,方便程序的分发和部署。 二、使用命令行打包JAR的步骤 以下是使用命令行打包JAR的具体步骤: 创建一个目录,将需要打包的文件复制到该目录下。 打开…

    Java 2023年5月26日
    00
  • java中的IO流

    下面是 Java 中的 IO 流的完整攻略。 一、IO 概述 IO(Input/Output)指输入/输出,是程序与外界交互的重要途径之一。在 Java 中,IO 操作分为“字节流”和“字符流”两大类。其中,“字节流”以字节为单位进行输入/输出,而“字符流”以字符为单位进行输入/输出。 二、字节流 字节流中,InputStream 和 OutputStrea…

    Java 2023年5月20日
    00
  • java开发只要tomcat设计模式用的好下班就能早

    Java开发只要Tomcat设计模式用的好下班就能早,这句话的含义是,如果在Java Web项目的开发中,我们能够使用适当的Tomcat设计模式,能够显著的提高开发效率,而且在上线后也能够减少服务器资源的使用,从而让我们能够更早地下班,实现工作和生活的平衡。 以下是两条具体的示例说明: 使用Tomcat连接池 连接池技术可以显著提高Web项目的性能,并且能够…

    Java 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部