jsp+servlet+javabean实现数据分页方法完整实例

yizhihongxing

jsp+servlet+javabean实现数据分页方法完整实例攻略

前言

数据分页是Web开发中常见的功能需求之一。在Java Web应用开发中,使用jsp+servlet+javabean组合实现数据分页功能是常见的方式。本攻略将详细介绍如何使用jsp、servlet、javabean实现数据分页功能。完整示例实现代码可在GitHub代码库中查看。

前置知识

在阅读本攻略之前,需要掌握以下知识:

  • HTML基础知识
  • Java语言基础及面向对象程序设计
  • Servlet、JSP的基础知识

环境要求

  • JDK 1.8+
  • Tomcat 8.5+
  • Eclipse IDE
  • MySQL 5.7+

实现步骤

1. 数据库设计

本示例需要使用MySQL数据库,并建立一个示例表tbl_user,表结构如下:

CREATE TABLE `tbl_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `gender` varchar(10) DEFAULT NULL,
  `address` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

2. 创建JavaBean

创建User类作为示例JavaBean,并添加id、name、age、gender、address等属性,提供相应的get/set方法。示例代码如下:

public class User {
    private int id;
    private String name;
    private int age;
    private String gender;
    private String address;

    // 省略get/set方法
}

3. 创建DAO类

创建UserDAO类作为示例DAO类,提供获取用户列表、获取用户总数等方法,示例代码如下:

public class UserDAO {
    // 获取用户总数
    public int getUserCount() {
        // TODO: 查询并返回总数
    }

    // 获取指定偏移量和限制数量的用户列表
    public List<User> getUserList(int offset, int limit) {
        // TODO: 查询并返回指定偏移量和限制数量的用户列表
    }
}

4. 创建Servlet类

创建PaginationServlet类作为示例Servlet类,提供分页查询处理逻辑。示例代码如下:

public class PaginationServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private static final int PAGE_SIZE = 5; // 每页记录数

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        int pageNum = 1; // 当前页面,默认为第一页
        if (request.getParameter("page") != null) {
            pageNum = Integer.parseInt(request.getParameter("page"));
        }

        UserDAO userDao = new UserDAO();
        int totalCount = userDao.getUserCount(); // 用户总数
        int pageCount = (int) Math.ceil((double) totalCount / PAGE_SIZE); // 页面总数

        // 取得用户列表
        int offset = (pageNum - 1) * PAGE_SIZE;
        List<User> userList = userDao.getUserList(offset, PAGE_SIZE);

        // 设置相关属性
        request.setAttribute("userList", userList);
        request.setAttribute("pageNum", pageNum);
        request.setAttribute("pageCount", pageCount);

        // 跳转至页面
        RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
        rd.forward(request, response);
    }
}

5. 创建JSP页面

创建index.jsp作为示例JSP页面,使用JSTL标签库展示用户列表,示例代码如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据分页演示</title>
</head>
<body>
    <h1>用户列表</h1>

    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>地址</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach items="${userList}" var="user">
                <tr>
                    <td>${user.id}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>${user.gender}</td>
                    <td>${user.address}</td>
                </tr>
            </c:forEach>
        </tbody>
    </table>

    <p>
        <c:if test="${pageNum > 1}">
            <a href="?page=${pageNum-1}">上一页</a>
        </c:if>
        <c:choose>
            <c:when test="${pageCount > pageNum}">
                <a href="?page=${pageNum+1}">下一页</a>
            </c:when>
            <c:otherwise>
                <span>下一页</span>
            </c:otherwise>
        </c:choose>
    </p>

</body>
</html>

6. 测试应用

完成上述步骤后,将应用部署至Tomcat并启动,访问http://localhost:8080/pagination-demo/pagination即可查看数据分页演示功能。

示例说明

示例1:修改每页数据记录数

示例中每一页默认展示5条记录,如果希望展示更多或更少,可以修改PaginationServlet中的PAGE_SIZE常量为所需值即可。

private static final int PAGE_SIZE = 5; // 每页记录数

示例2:修改页面样式

示例中展示的用户列表和分页器部分使用了简单的HTML样式,如果需要更改样式可以修改相应的HTML代码即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp+servlet+javabean实现数据分页方法完整实例 - Python技术站

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

相关文章

  • centos7下部署Redis

    1.1. Redis的安装 Redis是c语言开发的。 安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到linux系统。 第二步:解压缩redis。 第三步:编译。进入redis源码目录。make 第四步:安装。make install PREFIX=/usr…

    Redis 2023年4月13日
    00
  • SQLite和dBASE的区别

    SQLite和dBASE都是常见的数据库管理系统,二者有一些相同之处,但也存在很多区别。 SQLite 简介 SQLite是一种轻型的关系型数据库管理系统(RDBMS),其数据以文件形式保存在磁盘中。SQLite是一个自给自足的C语言库,不需要任何服务器就可以访问数据库。它能够处理多个并发请求(多线程),同时也支持事务操作,提供很好的数据一致性和完整性。 特…

    database 2023年3月27日
    00
  • MySql自动分区

    自动分区需要开启MySql中的事件调度器,可以通过如下命令查看是否开启了调度器 show variables like ‘%scheduler%’; 如果没开启的话通过如下指令开启 SET GLOBAL event_scheduler = 1;   1、创建一个分区表 CREATE TABLE sales ( id INT AUTO_INCREMENT, a…

    MySQL 2023年4月13日
    00
  • mysql列转行以及年月分组实例

    MySQL是一个关系型数据库管理系统,支持将列转换为行进行实例。列转行是指将一列中的数据按照某种方式转换成多行。 列转行 实例1:将一列中的数据用逗号隔开 假设有一个名为fruit的表,其中有一个名为name的列,里面存储有多种水果的名称,如“苹果”、“香蕉”等。我们需要将这些水果名称按照逗号隔开,变成新的多行数据,可以使用以下SQL语句实现: SELECT…

    database 2023年5月22日
    00
  • SQL Server 使用join all优化 or 查询速度

    什么是JOIN ALL 在SQL Server中,JOIN ALL实际上是UNION ALL联接(一种特殊的联接方式)。UNION ALL是将两个或多个SELECT语句的结果集组合成一个包含所有行的结果集。在执行UNION ALL联接时,数据库管理系统将查询中的所有结果集组合到一个新临时表中,以优化执行效率。与INNER JOIN不同,它是将两个表的每一行都…

    database 2023年5月21日
    00
  • MySQL 数据库两台主机同步实战(linux)

    我将为您详细讲解“MySQL 数据库两台主机同步实战(linux)”的完整攻略,过程中将包含两条示例说明。以下是步骤: 准备工作 在两台需要同步的主机上安装 MySQL 数据库; 确保两台主机之间已经能够通过网络互相访问; 设置主机 A 和主机 B 的 MySQL 数据库的参数,使得两台主机的 MySQL 数据库版本、字符集、大小端模式等参数相同。 步骤一:…

    database 2023年5月22日
    00
  • redis数据库拷贝

    import redis r = redis.Redis(host=’58.221.49.23′,password=’123456′,port=6379) for i in r.lrange(‘yhd:info_urls’,0,745): r.lpush(‘yhd:info_urls_back’,i)  

    Redis 2023年4月12日
    00
  • Python django使用多进程连接mysql错误的解决方法

    题目中提到的问题是在用Python的Django框架来连接MySQL数据库的过程中,因使用多进程方式引起的错误,下面是详细的攻略。 问题描述 使用Django框架连MySQL数据库时,使用了多进程方式来创建数据库连接,但是在使用这种方式时,会出现一些错误,例如: _mysql_exceptions.ProgrammingError: (2014, &quot…

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