Oracle JSP Apache 实现详细分页教程
需积分: 4 185 浏览量
更新于2024-12-25
收藏 7KB TXT 举报
本文档详细介绍了如何在JSP(JavaServer Pages)环境中,结合Oracle数据库和Apache服务器进行分页功能的实现。作者分享了一个具体的应用实例,涉及到以下关键知识点:
1. **环境配置**:使用Oracle JDBC驱动(`oracle.jdbc.driver.OracleDriver`)与数据库交互,通过`DriverManager.getConnection()`获取连接,参数包括数据库URL和用户名/密码。
2. **视图创建**:创建名为`mytable_view`的视图,该视图是从`mytable`表中查询数据并按`id`字段降序排序。此外,还创建了一个自增序列`mytable_sequence`用于生成新的ID。
3. **分页逻辑**:
- `ResultSet`对象`rs`用于执行SQL查询获取数据,`ResultSet`类型设置为`TYPE_SCROLL_SENSITIVE`和`CONCUR_UPDATABLE`,以支持滚动浏览和更新操作。
- 使用`Statement`对象`stmtcount`执行计数查询,计算总记录数(`rowCount`)。
- 定义分页参数,如每页大小(`pageSize`)、当前页(`currPage`),以及最大页数(`pageCount`)。
- 对用户传递的页码参数进行处理,确保其有效性(防止非法输入导致的问题)。
4. **分页查询与显示**:
- 根据当前页码,编写动态SQL语句以获取指定范围的数据(比如第`currPage * pageSize`到`(currPage + 1) * pageSize - 1`条数据)。
- 通过循环遍历结果集,将数据展示在JSP页面上,实现分页效果。
5. **页面跳转**:
- 当用户请求其他页时,通过`request.getParameter("page")`获取用户输入的页码,然后根据上述逻辑计算并重定向到相应的页面。
这个例子展示了JSP如何与Oracle数据库协作,利用JDBC进行数据检索,并实现基于用户的分页功能。这对于开发需要处理大量数据的Web应用非常实用,有助于提高用户体验。通过理解这些步骤,开发者可以更好地掌握在实际项目中实现类似功能的方法。
2009-02-19 上传
<%--
作者:何志强[hhzqq@21cn.com]
日期:2000-08-03
版本:1.0
功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle
--%>
<%@ page contentType="text/html;charset=8859_1" %>
<%
//变量声明
java.sql.Connection sqlCon; //数据库连接对象
java.sql.Statement sqlStmt; //SQL语句对象
java.sql.ResultSet sqlRst; //结果集对象
java.lang.String strCon; //数据库连接字符串
java.lang.String strSQL; //SQL语句
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize = 2;
//取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
//设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq");
//创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//准备SQL语句
strSQL = "select name,age from test";
//执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();
intRowCount = sqlRst.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>
</head>
<body>
第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%>下一页<%}%> <%if(intPage>1){%>上一页<%}%>
</body>
</html>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
姓名 | 年龄 |
---|---|
<%=sqlRst.getString(1)%> | <%=sqlRst.getString(2)%> |
2010-08-10 上传
2013-07-16 上传
2014-10-23 上传
2019-03-16 上传
2016-06-20 上传
2009-12-19 上传
2009-07-10 上传
ytfcelss
- 粉丝: 1
- 资源: 6
最新资源
- 西门子PLC工程实例源码第149期:s7-300工业过程控制程序案例.rar
- coco-manager:用于管理COCO数据集的Python脚本
- SagamoreTrade
- assignment:作业1
- discord-disconnect-users-v11:V11中的脚本可断开公会中的所有用户的连接
- 行业文档-设计装置-双轴斜式成槽机.zip
- scofield-blog:学生博客练习
- FtpClient:作为 Android 的cordova 插件实现的ftp 客户端
- SoftwareDevWeb:网络软件开发
- Macarbi:股票和价格跟踪应用程序
- 4-basic-classifiers-IRIS-dataset-Machine-Learning
- Tomcat压缩包,直接解压,打开bin目录的startup文件,不会乱码。
- 临床医学
- 在不安装bijoy软件的情况下以bijoy规则编写孟加拉Unicode
- Java-俩数的和.zip
- load-bid:设置您的负载出价