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中,实现查找算法的方式有很多,包括线性查找、二分查找、插值查找、哈希查找等等。本文将详细讲解Java中实现三种常见的查找算法:二分查找、插值查找、斐波那契查找。 二分查找 二分查找也称为折半查找,是一种效率较高的查找算法。二分查找的条件是数据必须是有序的,每次查找都是将查找区间缩小一半,直到查找到目标或者查找区间为空…

    Java 2023年5月19日
    00
  • Java NIO异步文件通道原理及用法解析

    Java NIO异步文件通道原理及用法解析 什么是Java NIO Java NIO(New IO)是一个针对Java 1.4及以上版本的IO API,用于提供替代传统Java IO API中比较耗时的阻塞式IO操作。与旧的IO API相比,它使Java的IO操作变得更快、更可扩展和更多功能。 Java NIO核心组件包括:选择器、ByteBuffer、Ch…

    Java 2023年5月20日
    00
  • Java超详细讲解WebMvcConfigurer拦截器

    下面是关于“Java超详细讲解WebMvcConfigurer拦截器”的完整攻略,包含两个示例说明。 Java超详细讲解WebMvcConfigurer拦截器 在Spring MVC中,我们可以使用拦截器来拦截请求并进行一些处理。WebMvcConfigurer是一个接口,它提供了一些方法来配置Spring MVC的行为,其中包括添加拦截器。本文将详细讲解W…

    Java 2023年5月17日
    00
  • Spring Security中防护CSRF功能详解

    Spring Security中防护CSRF功能详解 什么是CSRF攻击? CSRF(Cross-site request forgery)是一种网络攻击方式,也称为“跨站请求伪造”。攻击者在用户不知情的情况下,利用用户已有登录状态或者通过DNS欺骗、恶意软件等方式,向服务器发出伪造请求,从而达到非法操作的目的。 常见的CSRF攻击场景包括: 钓鱼邮件诈骗;…

    Java 2023年5月20日
    00
  • 三道java新手入门面试题,通往自由的道路–JVM

    三道Java新手入门面试题:通往自由的道路 — JVM 在Java面试中,常常会出现一些关于Java虚拟机(JVM)的问题,而这三道面试题可以帮助Java初学者掌握JVM的基础知识,进而为解决更复杂的问题打下基础。 面试题一:Java程序从编译到运行的过程是怎样的? Java程序的编译和运行大致可以分为以下几个步骤: 编译:将Java源代码编译成字节码文件…

    Java 2023年5月19日
    00
  • HTTP基本认证(Basic Authentication)的JAVA实例代码

    让我们来讲解一下“HTTP基本认证(Basic Authentication)的JAVA实例代码”的完整攻略。 什么是HTTP基本认证(Basic Authentication) HTTP基本认证是一种在HTTP协议中实现的身份验证机制。它是一种简单的、基于用户名和密码的认证方式,被广泛用于保护Web应用、API、系统管理界面等需要身份认证的场景。在HTTP…

    Java 2023年5月20日
    00
  • java压缩文件与删除文件的示例代码

    让我来介绍一下如何使用Java对文件进行压缩和删除。 压缩文件 Java中提供了zip压缩格式的支持,在使用时只需要使用java.util.zip包中的相关类即可。下面提供两个示例: 示例一:压缩单个文件 import java.io.*; import java.util.zip.*; public class ZipDemo { public stati…

    Java 2023年5月19日
    00
  • Java 读写Properties配置文件详解

    Java 读写Properties配置文件详解 什么是Properties文件? Properties文件是一种配置文件,常用于存储程序中需要的各种参数信息,可以被Java程序轻松地读写。Properties文件通常以”.properties”为后缀名,且文件内容为键值对的形式。 Properties文件的读写 读取Properties文件 读取Proper…

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