JSP连接SQL数据库实现数据分页显示
### JSP连接SQL数据库实现数据分页显示 在本文中,我们将探讨如何使用JSP(Java Server Pages)技术连接到SQL数据库并实现数据分页显示的功能。数据分页是提高用户体验的重要手段之一,特别是在处理大量数据时。接下来,将详细介绍其中涉及的关键知识点。 #### 一、分页显示基础概念 在Web开发中,分页是一种常见的技术,用于管理展示给用户的大量数据。通常,数据被分成多个页面,每个页面显示固定数量的数据记录。这种方式能够减少单个页面上的数据量,提高加载速度,使用户更容易浏览和查找所需信息。 #### 二、分页显示中的关键变量 根据题目描述,我们可以看到几个重要的变量: 1. **`pageSize`**: 每页显示的记录数。 2. **`totalItem`**: 记录总数。 3. **`totalPage`**: 总页数。 4. **`curPage`**: 当前显示的页码。 5. **`strPage`**: 获取当前页码的字符串表示形式。 这些变量是实现分页功能的基础,下面将逐一介绍它们的用途及计算方法。 - **`pageSize`**: 设置每页显示的记录数。在此示例中,`pageSize` 被设置为 10。 - **`totalItem`**: 计算记录总数,通过查询数据库获取。 - **`totalPage`**: 计算总页数。该值由 `totalItem` 和 `pageSize` 计算得出:`(totalItem + pageSize - 1) / pageSize`。 - **`curPage`**: 当前显示的页码。通过接收 URL 参数的方式获取。 - **`strPage`**: 用于存储当前页码的字符串表示形式,通过 `request.getParameter("page")` 获取。 #### 三、分页逻辑实现 1. **初始化变量**:首先设置每页显示的记录数 `pageSize` 并尝试从请求参数中获取当前页码 `strPage`。 2. **计算总页数**:通过查询数据库得到记录总数 `totalItem`,然后根据 `totalItem` 和 `pageSize` 计算出总页数 `totalPage`。 3. **确定当前页码**:如果当前页码小于 1 或者为空,则默认为第一页;如果大于总页数,则设置为最后一页。 4. **定位数据**:使用 `ResultSet` 的 `absolute()` 方法将指针移动到当前页的起始位置。 5. **显示数据**:遍历 `ResultSet`,并使用 JSP 表格标签显示数据记录。 6. **显示分页导航**:根据当前页码和总页数生成分页导航链接。 #### 四、JSP代码分析 ```jsp <%@page contentType="text/html;charset=gb2312"%> <%@page language="java" import="java.sql.*"%> ... ``` 此段代码定义了JSP页面的基本属性和导入了必要的Java包。接着,通过 JDBC 连接到数据库,并执行 SQL 查询语句。 ```jsp ResultSet rs = stmt.executeQuery("SELECT * FROM stuInfo"); ``` 这里使用 `executeQuery()` 方法执行 SQL 查询语句,返回一个 `ResultSet` 对象,其中包含所有查询结果。 ```jsp int pageSize;//一页显示的记录数 int totalItem;//记录总数 int totalPage;//总页数 int curPage;//待显示页码 String strPage; int i; pageSize = 10;//设置一页显示的记录数 strPage = request.getParameter("page"); //获得待显示页码 ``` 这部分代码定义了实现分页显示的关键变量,并初始化了每页显示的记录数 `pageSize`。 ```jsp if (curPage < 1) { curPage = 1; } rs.last(); //定位到最后一条记录 totalItem = rs.getRow(); totalPage = (totalItem + pageSize - 1) / pageSize; if (curPage > totalPage) curPage = totalPage; //如果当前页大于总页数,则设置为最后一页 if (totalPage > 0) { rs.absolute((curPage - 1) * pageSize + 1); //定位到当前页的起始位置 } i = 0; ``` 这段代码实现了关键的分页逻辑,包括计算总页数、确定当前页码以及定位到当前页的起始位置等操作。 ```jsp <table border="1" align="center" bgcolor="#cccccc"> <tr> <th width="50">学号</th> <th width="50">姓名</th> <th width="50">性别</th> <th width="50">年龄</th> <th width="50">系别</th> </tr> <% while (i < pageSize && !rs.isAfterLast()) { %> <tr> <td><%= rs.getString(1) %></td> <td><%= rs.getString(2) %></td> <td><%= rs.getString(3) %></td> <td><%= rs.getInt(4) %></td> <td><%= rs.getString(5) %></td> </tr> <% rs.next(); i++; } %> </table> ``` 这段代码使用 HTML 表格标签显示数据记录。通过遍历 `ResultSet` 对象,将数据逐条显示出来。 #### 五、分页导航实现 在 JSP 页面中还需要添加分页导航,以方便用户翻阅不同的页面。分页导航可以通过简单的条件判断和循环结构生成。 ```jsp <p align="center"><%= totalItem %>条记录,<%= totalPage %>页显示,当前页:<%= curPage %>页<br/> <% if (curPage > 1) { %> <a href="page.jsp?page=1">首页</a> <% } %> <% if (curPage > 1) { %> <a href="page.jsp?page=<%= curPage - 1 %>">上一页</a> <% } %> <% for (int j = 1; j <= totalPage; j++) { %> <a href='page.jsp?page=<%= j %>'> <%= j %> </a> <% } %> <% if (curPage < totalPage) { %> <a href="page.jsp?page=<%= curPage + 1 %>">下一页</a> <% } %> <% if (curPage < totalPage) { %> <a href="page.jsp?page=<%= totalPage %>">末页</a> <% } %> ``` 这段代码实现了分页导航的生成,包括首页、上一页、当前页、下一页和末页的链接。用户可以通过点击这些链接来翻阅不同的页面。 #### 六、总结 本文详细介绍了如何使用 JSP 技术连接 SQL 数据库实现数据分页显示的方法。通过合理设置分页相关的变量,可以有效地管理和展示大量的数据记录。此外,通过实现分页导航,进一步提高了用户体验。希望本文能帮助读者更好地理解和掌握 JSP 分页显示的相关知识。















==========================================================================
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" import="java.sql.*" %>
<html>
<head>
<title>JSP连接SQL数据库实现数据分页显示</title>
</head>
<body>
<h1 align="center">JSP连接SQL数据库实现数据分页显示</h1>
<%
try
{//建立JDBC-ODBC桥驱动程序,用到java.lang包中的类Class,调用其方法forName().
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try
{//创建连接对象con,它属于Connection类,然后用类DriverManager调用getConnection().
Connection con=DriverManager.getConnection("jdbc:odbc:stu");
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//创建SQL语句对象.
ResultSet rs=stmt.executeQuery("SELECT* FROM stuInfo");//执行SQL语句并返回结果.
int pageSize;//一页显示的记录数
int totalItem;//记录总数
int totalPage;//总页数
int curPage;//待显示页码
String strPage;
int i;


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 电气工程及其自动化专业就业前景.doc
- 无线传感器网络节点太阳能电源系统设计方案.doc
- 高中物理教学中促进学生深度学习的实践与思考.docx
- 小程序 商城 -Java 商城-C++资源
- 计算机与电子通信类人才的创新实践.docx
- 软件工程项目师简历模板.doc
- PLC程序设计与工作分析.doc
- 计算机网络试卷A计算机科学与技术(专升本).docx
- CnSTD-Python资源
- 数据库技术与应用杨金民答案.docx
- 电力工程中电气自动化技术探索.docx
- CADCAM及数控加工技术综合实践.docx
- 深圳金威计算机机房招标资料.doc
- MAPGIS工程师认证培训.ppt
- 对消防信息化建设中网络安全的思考和分析.doc
- EFIconFont-Swift资源


