隨筆-59  評論-31  文章-0  trackbacks-0
          oracle腳本:drop table t_student cascade constraints;

          /*==============================================================*/
          /* Table: t_student                                           */
          /*==============================================================*/
          create table t_student  (
             s_id              
          char(10)                        not null,
             s_name             varchar2(
          20)                    not null,
             s_age              
          char(2)                         not null,
             s_sex              
          char(2)                         not null,
             s_class            varchar2(
          20),
             constraint PK_T_STUDENT primary key (s_id)
          );

          insert into t_student values(
          '0001','張三','20','','08級二班') ;
          insert into t_student values(
          '0002','李四','21','','08級二班') ;
          insert into t_student values(
          '0003','王五','20','','08級二班') ;
          insert into t_student values(
          '0004','趙柳','20','','08級一班') ;
          insert into t_student values(
          '0005','楊梅','21','','08級二班') ;
          insert into t_student values(
          '0006','劉海','23','','08級一班') ;
          insert into t_student values(
          '0007','孫江','20','','08級一班') ;
          insert into t_student values(
          '0008','蘇燦','22','','08級二班') ;
          insert into t_student values(
          '0009','王霞','23','','08級一班') ;
          insert into t_student values(
          '0010','王猛','22','','08級二班') ;
          insert into t_student values(
          '0011','張相','22','','08級一班') ;
          insert into t_student values(
          '0012','香橙','20','','08級一班') ;
          insert into t_student values(
          '0013','李心','21','','08級二班') ;
          insert into t_student values(
          '0014','張強','20','','08級一班') ;
          insert into t_student values(
          '0015','趙琳','21','','08級一班') ;
          insert into t_student values(
          '0016','劉達','21','','08級二班') ;
          insert into t_student values(
          '0017','蘇惠','20','','08級二班') ;
          insert into t_student values(
          '0018','賈瑞','20','','08級一班') ;
          insert into t_student values(
          '0019','谷瑞坤','22','','08級二班') ;
          insert into t_student values(
          '0020','祥還','21','','08級一班') ;
          commit;

          采用單利模式創建DbUtil類獲得Connection對象:package com.stmcc.test.util;

          import java.sql.*;

          public class DbUtil {

              
          private static final String driver = "oracle.jdbc.driver.OracleDriver" ;
              
          private static final String url = "jdbc:oracle:thin:@10.10.10.2:1521:orcl" ;
              
          private static final String username = "test" ;
              
          private static final String password = "test" ;
              
          public static Connection getConnection(){
                  Connection conn 
          = null ;
                  
          try{
                      Class.forName(driver) ;
                      conn 
          = DriverManager.getConnection(url, username, password) ;
                  }
          catch(Exception e){
                      e.printStackTrace() ;
                  }
                  
          return conn ;
              }

              
          public static void close(Connection conn) {
                  
          if (conn != null) {
                      
          try {
                          conn.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
              }
              
              
          public static void close(PreparedStatement pstmt) {
                  
          if (pstmt != null) {
                      
          try {
                          pstmt.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
              }
              
              
          public static void close(ResultSet rs ) {
                  
          if (rs != null) {
                      
          try {
                          rs.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
              }
              
          public static void main(String[] args) {
                  System.out.println(DbUtil.getConnection());
              }
          }

          創建學生實體類:package com.stmcc.test;

          public class Student {

              
          private String s_id ;
              
          private String s_name ;
              
          private String s_age ;
              
          private String s_sex ;
              
          private String s_class ;
              
          public String getS_id() {
                  
          return s_id;
              }
              
          public void setS_id(String s_id) {
                  
          this.s_id = s_id;
              }
              
          public String getS_name() {
                  
          return s_name;
              }
              
          public void setS_name(String s_name) {
                  
          this.s_name = s_name;
              }
              
          public String getS_age() {
                  
          return s_age;
              }
              
          public void setS_age(String s_age) {
                  
          this.s_age = s_age;
              }
              
          public String getS_sex() {
                  
          return s_sex;
              }
              
          public void setS_sex(String s_sex) {
                  
          this.s_sex = s_sex;
              }
              
          public String getS_class() {
                  
          return s_class;
              }
              
          public void setS_class(String s_class) {
                  
          this.s_class = s_class;
              }
          }

          創建學生管理類:package com.stmcc.test.util;

          import com.stmcc.test.*;
          import java.sql.* ;
          import java.util.*
          public class StuManager {

              
          private static StuManager instance = new StuManager() ;
              
              
          private StuManager(){} ;
              
              
          public static StuManager getInstance(){
                  
          return instance ;
              }
          //  oracle實現分頁的查詢語句
          //    select s_id, s_name, s_age, s_sex, s_class
          //    from
          //    (
          //      select rownum rn, s_id, s_name, s_age, s_sex, s_class
          //      from
          //        (select s_id, s_name, s_age, s_sex, s_class 
          //         from t_student order by s_id
          //        )where rownum <= 10
          //    )where rn > 5 ;
              public PageModel findStudentList(int pageNo, int pageSize){
                  PageModel pageModel 
          = null ;
                  StringBuffer sql 
          = new StringBuffer() ;
                  sql.append(
          "select s_id, s_name, s_age, s_sex, s_class ")
                      .append(
          "from")
                      .append(
          "(")
                      .append(
          "select rownum rn, s_id, s_name, s_age, s_sex, s_class ")
                      .append(
          "from")
                      .append(
          "(")
                      .append(
          "select s_id, s_name, s_age, s_sex, s_class ")
                      .append(
          "from t_student order by s_id")
                      .append(
          ")")
                      .append(
          "where rownum <= ?")
                      .append(
          ")")
                      .append(
          "where rn > ? ");
                  Connection conn 
          = null ;
                  PreparedStatement pstmt 
          = null ;
                  ResultSet rs 
          = null ;
                  
          try{
                      conn 
          = DbUtil.getConnection() ;
                      pstmt 
          = conn.prepareStatement(sql.toString()) ;
                      pstmt.setInt(
          1, pageNo*pageSize) ;
                      pstmt.setInt(
          2, (pageNo - 1)*pageSize) ;
                      rs 
          = pstmt.executeQuery() ;
                      List
          <Student> stuList = new ArrayList<Student>() ;
                      
          while (rs.next()){
                          Student stu 
          = new Student() ;
                          stu.setS_id(rs.getString(
          "s_id")) ;
                          stu.setS_name(rs.getString(
          "s_name")) ;
                          stu.setS_age(rs.getString(
          "s_age")) ;
                          stu.setS_sex(rs.getString(
          "s_sex")) ;
                          stu.setS_class(rs.getString(
          "s_class")) ;
                          stuList.add(stu) ;
                      }
                      pageModel 
          = new PageModel() ;
                      pageModel.setList(stuList) ;
                      pageModel.setTotalRecords(getTotalRecords(conn)) ;
                      pageModel.setPageSize(pageSize);
                      pageModel.setPageNo(pageNo);
                  }
          catch(Exception e){
                      e.printStackTrace() ;
                  }
          finally{
                      DbUtil.close(rs) ;
                      DbUtil.close(pstmt) ;
                      DbUtil.close(conn) ;
                  }
                  
          return pageModel ;
              }
              
          /**
               * 取得總記錄數
               * 
          @param conn
               * 
          @return
               
          */
              
          private int getTotalRecords(Connection conn) 
              
          throws SQLException {
                  String sql 
          = "select count(*) from t_student";
                  PreparedStatement pstmt 
          = null;
                  ResultSet rs 
          = null;
                  
          int count = 0;
                  
          try {
                      pstmt 
          = conn.prepareStatement(sql);
                      rs 
          = pstmt.executeQuery();
                      rs.next();
                      count 
          = rs.getInt(1);
                  }
          finally {
                      DbUtil.close(rs);
                      DbUtil.close(pstmt);
                  }
                  
          return count;
              }
          }

          創建分頁模型類實現業務邏輯:package com.stmcc.test.util;

          import java.util.* ;
          public class PageModel {

              
          //結果集
              private List list ;
              
              
          //查詢總記錄數
              private int totalRecords ;
              
              
          //每頁多少條數據
              private int pageSize ;
              
              
          //第幾頁
              private int pageNo ;
              
              
          /**
               * 總頁數
               * 
          @return
               
          */
              
          public int getTotalPages(){
                  
          return (totalRecords + pageSize -1/ pageSize ;
              }
              
              
          /**
               * 取得首頁
               * 
          @return
               
          */
              
          public int getTopPageNo(){
                  
          return 1 ;
              }
              
              
          /**
               * 上一頁
               * 
          @return
               
          */
              
          public int getPreviousPageNo(){
                  
          if(pageNo <= 1){
                      
          return 1 ;
                  }
                  
          return pageNo - 1 ;
              }
              
              
          /**
               * 下一頁
               * 
          @return
               
          */
              
          public int getNextPageNo(){
                  
          if(pageNo >= getBottomPageNo()){
                      
          return getBottomPageNo() ;
                  }
                  
          return pageNo + 1 ;
              }
              
              
          /**
               * 取得尾頁
               * 
          @return
               
          */
              
          public int getBottomPageNo(){
                  
          return getTotalPages() ;
              }

              
          public List getList() {
                  
          return list;
              }

              
          public void setList(List list) {
                  
          this.list = list;
              }

              
          public int getTotalRecords() {
                  
          return totalRecords;
              }

              
          public void setTotalRecords(int totalRecords) {
                  
          this.totalRecords = totalRecords;
              }

              
          public int getPageSize() {
                  
          return pageSize;
              }

              
          public void setPageSize(int pageSize) {
                  
          this.pageSize = pageSize;
              }

              
          public int getPageNo() {
                  
          return pageNo;
              }

              
          public void setPageNo(int pageNo) {
                  
          this.pageNo = pageNo;
              }
          }

          jsp頁面:<%@ page contentType="text/html" pageEncoding="GBK"%>

          <%@ page import="com.stmcc.test.util.*"%>
          <%@ page import="com.stmcc.test.*"%>
          <%@ page import="java.sql.*"%>
          <%@ page import="java.util.*"%>
          <html>
          <head><title>分頁展示</title></head>
          <%
              
          int pageNo = 1 ;
              
          int pageSize = 5 ;
              String pageNoString 
          = request.getParameter("pageNo") ;
              
          if(pageNoString != null){
                  pageNo 
          = Integer.parseInt(pageNoString) ;
              }
              PageModel pageModel 
          = StuManager.getInstance().findStudentList(pageNo,pageSize) ;
          %>
          <script type="text/javaScript">
              function topPage() {
                  window.self.location 
          = "student.jsp?pageNo=<%=pageModel.getTopPageNo()%>";
              }
              
              function previousPage() {
                  window.self.location 
          = "student.jsp?pageNo=<%=pageModel.getPreviousPageNo()%>";
              }    
              
              function nextPage() {
                  window.self.location 
          = "student.jsp?pageNo=<%=pageModel.getNextPageNo()%>";
              }
              
              function bottomPage() {
                  window.self.location 
          = "student.jsp?pageNo=<%=pageModel.getBottomPageNo()%>";
              }
          </script>
          <body>
          <center>
            
          <table border="1">
            
          <tr>
                
          <td>學生編號</td>
                
          <td>學生姓名</td>
                
          <td>學生年齡</td>
                
          <td>學生性別</td>
                
          <td>學生班級</td>
            
          </tr>
            
          <%
                List stuList 
          = pageModel.getList() ;
                
          for(Iterator<Student> iter = stuList.iterator(); iter.hasNext();){
                    Student stu 
          = iter.next() ;
            
          %>
            
          <tr>
                
          <td><%=stu.getS_id() %></td>
                
          <td><%=stu.getS_name() %></td>
                
          <td><%=stu.getS_age() %></td>
                
          <td><%=stu.getS_sex() %></td>
                
          <td><%=stu.getS_class() %></td>
            
          </tr>
            
          <%
                }
            
          %>
            
          <tr><td colspan="5">
                共
          &nbsp;<%=pageModel.getTotalPages() %>&nbsp;頁&nbsp;&nbsp;&nbsp;&nbsp;
                當前第
          &nbsp;<%=pageModel.getPageNo() %>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            
          <input type="button" value="首頁" onClick="topPage()">
            
          <input type="button" value="上一頁" onClick="previousPage()">
            
          <input type="button" value="下一頁" onClick="nextPage()">
            
          <input type="button" value="尾頁" onClick="bottomPage()">
            
          </td></tr>
            
          </table>
          </center>
          </body>
          </html>
          posted on 2012-01-31 13:25 RoyPayne 閱讀(2253) 評論(2)  編輯  收藏 所屬分類: jsp相關

          評論:
          # re: jsp+oracle實現簡單的分頁[未登錄] 2013-04-18 09:56 | 1
          請問,帶參數怎么做分頁  回復  更多評論
            
          # re: jsp+oracle實現簡單的分頁[未登錄] 2013-04-18 10:46 | 1
          參數問題解決。  回復  更多評論
            
          主站蜘蛛池模板: 襄城县| 昭苏县| 特克斯县| 南溪县| 大关县| 京山县| 都兰县| 晋中市| 两当县| 大兴区| 都匀市| 洛南县| 四川省| 泊头市| 贵阳市| 宝丰县| 焉耆| 峡江县| 阳曲县| 恩施市| 沙湾县| 威海市| 红原县| 万全县| 福鼎市| 柳州市| 健康| 通榆县| 新蔡县| 正宁县| 抚顺市| 平湖市| 阜宁县| 莲花县| 汝州市| 休宁县| 顺平县| 澎湖县| 桐梓县| 诸暨市| 麟游县|