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日

相关文章

  • 解决@PathVariable出现点号.时导致路径参数截断获取不全的问题

    在Spring MVC中,@PathVariable注解用于从URL中提取路径参数。但是,当路径参数中包含点号(.)时,Spring MVC会将其解释为文件扩展名,导致路径参数截断获取不全的问题。在本文中,我们将详细讲解如何解决这个问题,并提供两个示例来说明这个过程。 解决方案 要解决@PathVariable出现点号.时导致路径参数截断获取不全的问题,我们…

    Java 2023年5月18日
    00
  • java乐观锁原理与实现案例分析

    Java乐观锁原理与实现案例分析 什么是乐观锁? 乐观锁是一种轻量级锁,它假定不会有其它线程修改共享资源,因此,不需要加锁,只要在最后提交时检查是否有其它线程修改了此数据就好了。 如何实现乐观锁? 实现乐观锁的关键是要保证数据提交时的原子性,通常有两种方式来实现: 基于版本号的乐观锁:通过给数据增加一个版本号,每次操作都需要比较版本号是否一致,只有版本号一致…

    Java 2023年5月18日
    00
  • Jquery ajax基础教程

    关于“Jquery ajax基础教程”的完整攻略,我会从以下几个方面进行讲解: Jquery ajax的定义和基础原理 Jquery ajax是一个强大而灵活的基于Ajax请求的JavaScript库,它可以帮助开发者更加轻松地实现异步的HTTP请求和响应。Jquery ajax的基础原理是通过XMLHttpRequest对象来实现的,同时也可以使用JSON…

    Java 2023年5月20日
    00
  • Java Bean 作用域及它的几种类型介绍

    Java Bean 作用域及它的几种类型介绍 什么是 Java Bean Java Bean 是一种特殊的 Java 类,它具有无参构造器、私有属性和公共 setter/getter 方法,以封装数据,并提供给其他对象使用。Java Bean 通常被用于简化 Java 应用程序的开发过程,也可以用于在不同的设备和应用程序之间传输数据。在 Java Web 应…

    Java 2023年5月26日
    00
  • 基于Spring + Spring MVC + Mybatis 高性能web构建实例详解

    基于Spring + Spring MVC + Mybatis 高性能web构建实例详解 简介 Spring + Spring MVC + Mybatis是一种常用的Java Web开发框架组合,它们分别负责业务逻辑、Web层和数据访问层。本文将介绍如何使用这三个框架构建高性能的Web应用程序。 环境搭建 在开始之前,我们需要先搭建好开发环境。以下是环境搭建…

    Java 2023年5月17日
    00
  • Java Tomcat 启动闪退问题解决集

    Java Tomcat 启动闪退问题解决集 问题描述 在使用Java Tomcat时,有时会出现启动后闪退的问题。这个问题十分棘手,让人头疼。本文将从几个方面介绍如何解决这个问题。 解决方法 方法一:配置config文件 步骤1:打开Tomcat的config文件夹 打开Tomcat的安装目录下的conf文件夹,找到打开server.xml文件。 步骤2:修…

    Java 2023年6月2日
    00
  • Java中instanceof关键字的用法总结

    下面是Java中instanceof关键字的用法总结。 Java中instanceof关键字的用法总结 1. 什么是instanceof? instanceof是Java中的一个二元运算符,用于判断一个对象是否为一个类的实例,或者是该类的子类或者接口的实例。它的语法如下: result = object instanceof Class 其中,object是…

    Java 2023年5月26日
    00
  • environments was not found on the java.library.path 问题的解决方法

    问题背景: 当在Java程序中调用JNI(Java Native Interface)代码或使用一些依赖本地库的第三方库时,可能会出现“environments was not found on the java.library.path”错误。这是因为JVM无法找到必要的库或库文件路径,导致没有正确初始化本地环境。 解决方法: 一般情况下,要解决这个问题,…

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