您的位置:首页 > Web前端 > JavaScript

JSP的分页技术

2014-11-24 21:38 239 查看
在实际应用中,如果从数据库中查询的记录特别的多,甚至超过了显示屏的显示范围,这个时候可将结果进行分页显示。

[java] view plaincopy

假设总记录数为intRowCount,每页显示的数量为inPageSize,总页数为intPageCount,那么总页数的计算公式如下:

如果:(intRowCount%intPageSize)>0,则intPageCount=intRowCount/intPageSize+1

如果:(intRowCount%intPageSize)=0,则intPageCount=intRowCount/intPageSize

翻页后显示intPage页的内容,将记录指针移动到(intPage-1)*intPageSize+1

建立pageBreak.jsp文件,代码如下

[java] view plaincopy

<%@ page import="java.sql.*" %>

<%@ page contentType="text/html" pageEncoding="UTF-8" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charest=UTF-8">

<title>JSP分页浏览</title>

</head>

<body>

<div align="center">

分页显示记录内容

<hr>

<table border="1" bgcolor="cccfff" align="center">

<tr>

<th>学号</th>

<th>班级</th>

<th>姓名</th>

<th>性别</th>

<th>年龄</th>

</tr>

<%

String DBDRIVER="org.gjt.mm.mysql.Driver"; //我用的mysql数据库

String DBURL="jdbc:mysql://localhost:3306/example";

String DBUSER="root";

String DBPASS="mysqladmin";

String sql="select * from paging";

int intPageSize; //一页显示的记录数

int intRowCount; //记录总数

int intPageCount; //总页数

int intPage; //待显示页码

int i;

String strPage;

intPageSize=5; //设置一页显示的记录数

//取得待显示页码

strPage=request.getParameter("page");

if(strPage==null){ //没有page这个属性

intPage=1;

}else{

intPage=java.lang.Integer.parseInt(strPage);

if(intPage<1){

intPage=1;

}

}

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);

stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=stmt.executeQuery(sql);

rs.last(); //光标指向查询结果集的最后一条记录

intRowCount=rs.getRow(); //获取记录总数

intPageCount=(intRowCount+intPageSize-1)/intPageSize; //计算总页数

if(intPage>intPageCount){ //调整待显示的页码

intPage=intPageCount;

}

if(intPageCount>0){

rs.absolute((intPage-1)*intPageSize+1); //将记录指针定位在待显示页的第一天记录上

}

//显示数据

i=0;

while(i<intPageSize&&!rs.isAfterLast()){

%>

<tr>

<td><%=rs.getString("stuNumber") %></td> //从数据库读取记录

<td><%=rs.getString("stuBanji") %></td>

<td><%=rs.getString("stuName") %></td>

<td><%=rs.getString("stuSex") %></td>

<td><%=rs.getString("stuAge") %></td>

</tr>

<%

rs.next();

i++;

}

%>

</table>

<hr>

<div align="center">

第<%=intPage %>页 共<%=intPageCount %>页

<%

if(intPage>1){

%>

<a href="pageBreak.jsp?page=<%=intPage-1%>">上一页</a>

<%

} //下一页

if(intPage<intPageCount){

%>

<a href="pageBreak.jsp?page=<%=intPage+1%>">下一页</a>

<%

}

rs.close();

stmt.close();

conn.close();

%>

</div>

</div>

</body>

</html>

显示结果如下:

1、


2、


3、


数据库代码为:

[java] view plaincopy

create database example;

create table paging(

stuNumber varchar(15),

stuBanji varchar(10),

stuName varchar(50),

stuSex varchar(4),

stuAge int

);

INSERT INTO paging(stuNumber,stuBanji,stuName,stuSex,stuAge) VALUES ('2012040101207','24010105','鲍礼彬','男',23);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: