JSP的分页技术

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

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

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

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

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

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

<%@ 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、


数据库代码为:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值