jsp中页面的分页显示
### JSP中的页面分页显示技术详解 #### 一、引言 在Web开发中,尤其是在数据量较大的情况下,为了提高用户体验以及减轻服务器负担,页面的分页显示成为了一种非常重要的技术。本文将详细介绍如何在JSP(Java Server Pages)环境中实现页面的分页显示功能。 #### 二、分页显示原理 页面分页显示的核心在于通过控制查询数据库时返回的数据量,从而达到按页展示数据的效果。具体来说,主要包括以下几个步骤: 1. **确定每页显示的记录数**:根据需求设置每页展示多少条记录。 2. **计算总页数**:通过查询数据库获取总的记录数,然后根据每页显示的记录数计算出总页数。 3. **确定当前页码**:通过用户请求获取当前页码,如果未指定则默认为第一页。 4. **查询当前页的数据**:根据当前页码和每页显示的记录数,执行相应的SQL查询语句获取数据。 5. **构建分页导航**:生成上一页、下一页等链接供用户切换页面。 #### 三、示例代码分析 下面我们将结合提供的示例代码,进一步解析分页显示的具体实现方法。 ##### 1. 页面初始化及变量声明 ```jsp <%@ page contentType="text/html;charset=gb2312" %> <%@ page language="java" import="java.sql.*" %> ``` 这里设置了页面的编码格式为`gb2312`,并导入了处理数据库所需的`java.sql.*`包。 ##### 2. JavaScript函数定义 ```javascript function newwin(url) { var newwin = window.open(url, "newwin", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=450"); newwin.focus(); return false; } function submit10() { self.location.replace("fenye1.jsp"); } ``` 这两个JavaScript函数分别用于打开新窗口和重定向到另一个页面,但与分页显示逻辑关系不大,此处仅作简要说明。 ##### 3. Java代码逻辑 ```java int intPageSize = 4; // 每页显示的记录数 String strPage = request.getParameter("page"); // 获取当前页码 int intPage = 1; // 默认第一页 // 如果请求参数中有page,则获取并转换为整型 if (strPage != null) { intPage = Integer.parseInt(strPage); if (intPage < 1) intPage = 1; } // 连接数据库 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 加载JDBC驱动 String strCon = "jdbc:odbc:heyang"; // 数据库连接字符串 Connection sqlCon = DriverManager.getConnection(strCon, "sa", ""); // 建立连接 Statement sqlStmt = sqlCon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); // 创建Statement对象 String strSQL = "SELECT user_id, user_name FROM userinfo ORDER BY user_id DESC"; // 查询语句 ResultSet sqlRst = sqlStmt.executeQuery(strSQL); // 执行查询 ``` 以上代码实现了以下功能: - 设置每页显示的记录数为4条。 - 从请求中获取当前页码,默认为第一页。 - 加载JDBC驱动,并建立数据库连接。 - 创建Statement对象,准备执行SQL查询。 - 定义查询语句:按照`user_id`降序排列获取`user_id`和`user_name`两列。 ##### 4. 分页逻辑实现 ```java sqlRst.last(); // 将指针移到最后一行 int intRowCount = sqlRst.getRow(); // 获取总记录数 int intPageCount = (intRowCount + intPageSize - 1) / intPageSize; // 计算总页数 // 确保当前页不超过总页数 if (intPage > intPageCount) intPage = intPageCount; ``` 这段代码的关键在于计算总记录数和总页数,并确保当前页码的有效性。 ##### 5. 构建分页导航 ```jsp <%= intPage %> 页 <%= intPageCount %> 页 <% if (intPage < intPageCount) { %> <a href="fenye1.jsp?page=<%= intPage + 1 %>">下一页</a> <% } %> <% if (intPage > 1) { %> <a href="fenye1.jsp?page=<%= intPage - 1 %>">上一页</a> <% } %> ``` 这部分代码用于生成当前页码、总页数以及上一页、下一页的链接,方便用户进行页面切换。 ##### 6. 查询并显示当前页数据 ```jsp <table border="1" cellspacing="0" cellpadding="0"> <tr> <th>编号</th> <th width=8%>删除</th> </tr> ``` ```java // 重新定位到第一条记录 sqlRst.beforeFirst(); while (sqlRst.next()) { // 根据实际情况输出数据 // 例如:out.print(sqlRst.getString("user_name")); } ``` 这部分代码首先设置了表格的基本结构,然后通过循环遍历当前页的数据并将其输出到页面上。 #### 四、总结 本文详细介绍了在JSP环境中实现页面分页显示的方法,包括分页显示的基本原理、关键步骤以及具体的代码实现。通过上述示例代码的分析,我们可以看到整个分页显示过程是如何通过控制数据库查询的结果集来实现的。这种技术不仅可以提高用户的浏览体验,还能有效地减少服务器的压力,对于大型网站或应用来说是非常实用且必要的功能之一。
jsp分页显示
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" import="java.sql.*" %>
<script language="javascript">
function newwin(url) {
var
newwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no,
menubar=no,scrollbars=yes,resizable=yes,width=600,height=450");
newwin.focus();
return false;
}
</script>
<script LANGUAGE="javascript">
function submit10()
{
self.location.replace("fenye1.jsp")
}
</script>
<%//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
- xueyao6305999402013-03-07单一代码,不太清楚如何应用
- taomuhaixing2014-03-31还可以,就是相对单一些
- hanxi8132013-06-04无法应用到实力
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 蚁群算法小程序-matlab
- 粒子群算法小程序-matlab
- 《新能源接入的电力市场主辅联合出清》 出清模型以考虑安全约束的机组组合模型(SCUC)和经济调度模型(SCED)组成 程序基于IEEE30节点编写,并接入风电机组参与电力市场,辅助服务市场为备用市场
- 个人创作原画作品,禁止盗用
- 遗传算法程序-matlab
- 游戏人物检测15-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Windows 7安装NET补丁
- 高动态导航技术全套技术资料.zip
- cms测试练习项目(linux系统部署)
- 游戏人物检测15-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- 名城小区物业管理-JAVA-基于Spring boot的名城小区物业管理系统设计实现(毕业论文+开题)
- 多媒体素材库-JAVA-基于springboot的多媒体素材库的开发与应用(毕业论文)
- 大学生心理健康管理-JAVA-基于springBoot大学生心理健康管理系统的设计与实现(毕业论文)
- 论坛系统-JAVA-基于SpringBoot的论坛系统设计与实现(毕业论文+开题+PPT)
- 游戏人物检测17-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 大学生智能消费记账-JAVA-springboot205大学生智能消费记账系统的设计与实现(毕业论文)