分享

jsp+oracle分页查询正传

 青_春 2016-04-08

Ⅰ建一个jsp文件使其能够访问oracle数据库,查询emp雇员表,并实现分页查询功能。

Ⅱ开发分析:jsp连oracle查询数据的功能已经在昨天实现,今天重点 要实现的是分页查询功能,即把查询数据分页列出来,通过上一页,下一页来查看查询结果,所以这里需要用到jsp的表单来实现该操作。而分页查询又具体分为真分页查询和假分页查询,这里讨论的是真分页查询,若以需要用到rownum来实现,查询语句为

     sql =  "SELECT * FROM ( " +
   " SELECT empno,ename,job,hiredate,sal,comm,ROWNUM rn " +
   " FROM emp WHERE ROWNUM<=? ORDER BY empno) temp " +
   " WHERE temp.rn>? " ;

Ⅲ具体实现代码脚本如下:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*" %>
<html>
<head><title>锋叔子的bolog</title>
<style type="text/css">
<!--
.STYLE6 {font-size: 12px}
.STYLE10 {font-size: 14px; font-weight: bold; }
-->
</style>
</head>
 <script language="javascript">
  function changeColor(obj,color){
   obj.bgColor = color ;
  }
 </script>
<body>
<%!
 public static final String URL = "emp_list_true.jsp" ;
%>
<%!
 public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
 public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:oracle" ;
 public static final String DBUSER = "scott" ;
 public static final String DBPASSWORD = "tiger" ;
%>
<%
 Connection conn = null ;
 PreparedStatement pstmt = null ;
 ResultSet rs = null ;
%>
<%
 int currentPage = 1 ; // 为当前所在的页,默认在第1页
 int lineSize = 3 ;  // 每次显示的记录数
 int allRecorders = 0 ; // 表示全部的记录数
 int pageSize = 1 ;  // 表示全部的页数(尾页)
 int lsData[] = {1,3,5,7,9,10,15,20,25,30,50,100} ;
%>
<%
 try{
  currentPage = Integer.parseInt(request.getParameter("cp")) ;
 } catch(Exception e) {}
 try{
  lineSize = Integer.parseInt(request.getParameter("ls")) ;
 } catch(Exception e) {}
%>
<%
 Class.forName(DBDRIVER) ;
 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
 String sql = "SELECT COUNT(empno) FROM emp" ;
 pstmt = conn.prepareStatement(sql) ;
 rs = pstmt.executeQuery() ;
 if(rs.next()){ // 取得全部的记录数
  allRecorders = rs.getInt(1) ;
 }
%>
<center>
 <h1>员工列表</h1>
<script language="javascript">
 function go(num){
  document.getElementByIdx_x("cp").value = num ;
  document.spform.submit() ; // 表单提交
 }
</script>
<%
 pageSize = (allRecorders + lineSize -1) / lineSize ;
%>
<%
 sql =  "SELECT * FROM ( " +
   " SELECT empno,ename,job,hiredate,sal,comm,ROWNUM rn " +
   " FROM emp WHERE ROWNUM<=? ORDER BY empno) temp " +
   " WHERE temp.rn>? " ;
 pstmt = conn.prepareStatement(sql) ;
 pstmt.setInt(1,currentPage * lineSize) ;
 pstmt.setInt(2,(currentPage-1) * lineSize) ;
 rs = pstmt.executeQuery() ;
%>
<form name="spform" action="<%=URL%>" method="post">
 <input type="button" value="首页" onclick="go(1)" <%=currentPage==1?"DISABLED":""%>>
 <input type="button" value="上一页" onclick="go(<%=currentPage-1%>)" <%=currentPage==1?"DISABLED":""%>>
 <input type="button" value="下一页" onclick="go(<%=currentPage+1%>)" <%=currentPage==pageSize?"DISABLED":""%>>
 <input type="button" value="尾页" onclick="go(<%=pageSize%>)" <%=currentPage==pageSize?"DISABLED":""%>>
 跳转到第<select name="selcp" onchange="go(this.value)">
  <%
   for(int x=1;x<=pageSize;x++){
  %>
    <option value="<%=x%>" <%=x==currentPage?"SELECTED":""%>><%=x%></option>
  <%
   }
  %>
 </select>页
 每页显示
  <select name="ls" onchange="go(1)">
  <%
   for(int x=0;x<lsData.length;x++){
  %>
   <option value="<%=lsData[x]%>" <%=lsData[x]==lineSize?"SELECTED":""%>><%=lsData[x]%></option>
  <%
   }
  %>
  </select>
 
 <input type="hidden" name="cp" value="1">
</form>
<TABLE BORDER="1" cellpadding="5" cellspacing="0" bgcolor="F2F2F2" width="100%">
 <TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')">
  <td align="center" valign="middle"><span class="STYLE10">编号</span></td>
  <td align="center" valign="middle"><span class="STYLE10">姓名</span></td>
  <td align="center" valign="middle"><span class="STYLE10">职位</span></td>
  <td align="center" valign="middle"><span class="STYLE10">雇佣日期</span></td>
  <td align="center" valign="middle"><span class="STYLE10">工资</span></td>
  <td align="center" valign="middle"><span class="STYLE10">奖金</span></td>
 </TR>
<%
 while(rs.next()){
  int empno = rs.getInt(1) ;
  String ename = rs.getString(2) ;
  String job = rs.getString(3) ;
  Date hiredate = rs.getDate(4) ;
  double sal = rs.getDouble(5) ;
  double comm = rs.getDouble(6) ;
%>
 <TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')">
  <td align="center" valign="middle"><span class="STYLE6"><%=empno%></span></td>
  <td align="center" valign="middle"><span class="STYLE6"><%=ename%></span></td> 
  <td align="center" valign="middle"><span class="STYLE6"><%=job%></span></td>
  <td align="center" valign="middle"><span class="STYLE6"><%=hiredate%></span></td>
  <td align="center" valign="middle"><span class="STYLE6"><%=sal%></span></td>
  <td align="center" valign="middle"><span class="STYLE6"><%=comm%></span></td>
 </TR>
<%
 }
%>
</table>
<%
 conn.close() ;
%>
</center>
</body>
</html>

Ⅳ程序如上,启动tomcat在主页上打开jsp文件运行效果如图所示:
jsp+oracle分页查询正传

jsp+oracle分页查询正传

Ⅴ程序员心情:jsp实现的分页查询,其实有些还不是很懂,但我想先把这一模式整明白也是好的,不懂的其实并不是分页查询的部分,而是对jsp不熟悉,确切的说是我还是一个java web的菜鸟还有很长的一段路要走,好在还有时间,应该说我已经走在了好多人的前面这是我应该庆幸的地方,努力吧,锋叔。。。。

jsp+oracle分页查询正传


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多