Oracle JSP Apache 实现详细分页教程

需积分: 4 3 下载量 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> <% if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0; while(i<intPageSize && !sqlRst.isAfterLast()){ %> <% sqlRst.next(); i++; } } %>
姓名 年龄
<%=sqlRst.getString(1)%> <%=sqlRst.getString(2)%>
第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%>
下一页<%}%> <%if(intPage>1){%>上一页<%}%> </body> </html> <% //关闭结果集 sqlRst.close(); //关闭SQL语句对象 sqlStmt.close(); //关闭数据库 sqlCon.close(); %>