P实现数据库分页功能 (jsp分页数据库)
随着互联网发展,越来越多的网站需要展示大量的数据,而数据库分页功能是实现这一需求的重要途径。在P中,使用分页可以有效地减少查询数据量,提高网页性能,同时也方便用户浏览大量数据。本文将介绍如何在P中实现数据库分页功能。
之一步:建立数据库和数据表
在实现分页功能之前,首先需要建立一个数据库和一个数据表。在本文中,我们以MySQL数据库为例,创建test数据库和person表。person表包含id、name、age三个字段,其中id为主键。
1.创建test数据库
在MySQL中创建一个名为test的数据库。
CREATE DATABASE test;
2.在数据库test中创建person表
使用以下命令在test数据库中创建person表:
CREATE TABLE person (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) DEFAULT NULL,
age INT(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
第二步:在P中编写代码
1.连接数据库
在P中连接MySQL数据库需要使用JDBC驱动。JDBC(Java Database Connectivity)是Java诸多API之一,提供了一组标准的接口,用于连接各种类型的数据库。
在本文中,我们使用MySQL Connector/J驱动,该驱动可以从MySQL官网上下载,下载地址为https://dev.mysql.com/downloads/connector/j/。下载后将该驱动包放到Tomcat服务器中的lib目录下即可。
在连接数据库之前,需要在P文件中导入MySQL Connector/J驱动的包。如下所示:
接下来,通过以下代码与数据库建立连接:
String driver = “com.mysql.jdbc.Driver”;
String url = “jdbc:mysql://localhost:3306/test”; // 数据库连接url
String username = “root”;
String password = “123456”; // 数据库连接密码
Connection conn = null;
Class.forName(driver); // 注册 JDBC 驱动
conn = DriverManager.getConnection(url, username, password); // 打开连接
2.查询数据库
在进行分页之前,需要首先查询数据库中的数据,并将查询到的数据存储到List中,之后再进行分页操作。
以下是查询数据库数据的代码:
String sql = “SELECT id, name, age FROM person”;
PreparedStatement statement = conn.prepareStatement(sql);
ResultSet result = statement.executeQuery(); // 执行查询语句
List personList = new ArrayList(); // 定义List,用于存储查询到的数据
while(result.next()) {
Person person = new Person();
person.setId(result.getInt(“id”));
person.setName(result.getString(“name”));
person.setAge(result.getInt(“age”));
personList.add(person);
}
3.分页处理
在P中实现分页功能,需要计算总页数、当前页信息等。以下是实现分页功能的核心代码:
// 每页显示的记录数
int pageSize = 10;
// 总记录数
int total = personList.size();
// 总页数
int pageCount = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
request.setAttribute(“pageCount”, pageCount); // 将总页数存储到request对象中,后续分页按钮使用
// 当前页号
int currentPage = request.getParameter(“page”) == null ? 1 : Integer.parseInt(request.getParameter(“page”));
request.setAttribute(“currentPage”, currentPage); // 将当前页号存储到request对象中,后续分页按钮使用
// 当前页的起始和结束记录数
int startIndex = (currentPage – 1) * pageSize;
int endIndex = startIndex + pageSize > total ? total : startIndex + pageSize;
// 获取当前页的数据
List currentPageList = personList.subList(startIndex, endIndex);
request.setAttribute(“currentPageList”, currentPageList); // 将当前页数据存储到request对象中
上述代码中,首先根据每页显示记录数pageSize和总记录数total计算总页数pageCount,将总页数存储到request对象中。之后通过判断当前页号currentPage是否为空,如果为空则设置currentPage为1,否则将currentPage转换成整型。将currentPage存储到request对象中。
之后根据当前页号currentPage和每页显示记录数pageSize计算当前页的起始和结束记录数startIndex和endIndex。使用List的subList方法获取当前页的数据,并将其存储到request对象中。
4.展示数据和分页
查询数据库和分页处理完成后,就可以将数据展示在网页上,并显示分页按钮。
以下是实现数据展示和分页按钮的代码:
id | 姓名 | 年龄 |
<%
int currentPage = (int)request.getAttribute(“currentPage”);
int pageCount = (int)request.getAttribute(“pageCount”);
for (int i = 1; i <= pageCount; i++) {
%>
<a href="list.jsp?page=” style=”margin-right:10px;”>
<%
}
%>
上述代码中,首先将当前页数据currentPageList从request对象中获取,之后使用循环语句将数据展示在表格中。
之后通过request对象中存储的currentPage和pageCount计算分页按钮的个数,使用循环语句将分页按钮展示在页面上。分页按钮的链接为list.jsp?page=1、list.jsp?page=2等,其中page参数表示需要展示的页号。
第三步:测试代码
完成以上步骤后,即可在浏览器中查看分页效果。
在浏览器中输入http://localhost:8080/list.jsp,即可进入分页页面,如下图所示:
![分页效果图](https://img-blog.csdnimg.cn/20230219153312902.png)
点击分页按钮可以切换到对应的页码,如下图所示:
![切换分页效果图](https://img-blog.csdnimg.cn/20230219153329740.png)