随笔-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 阅读(2224) 评论(2)  编辑  收藏 所属分类: jsp相关

评论:
# re: jsp+oracle实现简单的分页[未登录] 2013-04-18 09:56 | 1
请问,带参数怎么做分页  回复  更多评论
  
# re: jsp+oracle实现简单的分页[未登录] 2013-04-18 10:46 | 1
参数问题解决。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: