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 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;
}
}
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 >