分页功能没有想新手想象中的麻烦,反而非常简单。不用改动数据库,只是jsp页面中定义4个变量和改变sql的查询语句。
4个变量:
pageSize 每页显示记录的数目
//pageSize的值
为自己定义一个常量
pageNow 当前显示的页面数
//pageNow的值
默认为1,
//接受用户希望显示的页数(pageNow)
String
s_pageNow=request.getParameter("pageNow");
if(s_pageNow!=null){
pageNow=Integer.parseInt(s_pageNow);
}
pageCount 总共页数
//计算pageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
rowCount 记录总数
//获取rowCount值
select count(*) from branch
sql查询语句为:
"select * from branch limit "+pageSize*(pageNow-1)+","+pageSize
其中branch为表名,limit用于返回查询数据返回的前几条或中间几条,如:
SELECT * FROM branch LIMIT 2,10
表示查询branch中从第3记录到第12记录。
2表示开始位置,初始为0,所以2表示第3条记录。
10表示查询数目,即分页查询中每页显示记录的数目。
代码:
<%@ page language="java" import="java.util.*,java.sql.*"
pageEncoding="utf-8"%>
<%
String path =
request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<base
href="<%=basePath%>">
<title>分页测试</title>
<meta http-equiv="pragma"
content="no-cache">
<meta http-equiv="cache-control"
content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords"
content="keyword1,keyword2,keyword3">
<meta http-equiv="description"
content="This is my page">
<!--
<link rel="stylesheet"
type="text/css" href="styles.css">
-->
</head>
<body>
分页测试 <br>
<h1>用户信息列表</h1>
<%
//定义四个分页会用到的变量
int
pageSize=2;//每页显示的记录数目
int pageNow=1;//显示的页数,默认显示第一页
int
rowCount=0;//一共有多少条记录,该值从数据库中查询
int
pageCount=0;//一共有多少页,该值是通过pageSize和rowCount
//接受用户希望显示的页数(pageNow)
String
s_pageNow=request.getParameter("pageNow");
if(s_pageNow!=null){
//接收到了pageNow
pageNow=Integer.parseInt(s_pageNow);
}
//查询得到rowCount
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Success
loading Mysql Driver!!");
}catch(Exception e){
System.out.print("Error
loading Myswql
Driver!!!!!!");
e.printStackTrace();
}
try{
Connection
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","1");
System.out.println("Success
Connection!!!");
Statement sm=ct.createStatement();
ResultSet
rs=sm.executeQuery("select count(*) from branch");
if(rs.next()){
rowCount=rs.getInt(1);
}
//计算pageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
//查询出需要显示的记录
rs=sm.executeQuery(
"select
* from branch limit "+pageSize*(pageNow-1)+","+pageSize);
%>
<!-- 显示
-->
<table
border="1">
<tr><td>用户ID</td><td>用户名字</td><td>密码</td><td>电邮</td><td>级别</td></tr>
<%
while(rs.next()){
%>
<tr><td><%=rs.getInt(1)%></td><td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td><td><%=rs.getString(4)%></td><td><%=rs.getString(5)%></td></tr>
<%}%>
</table>
<%
//上一页
if(pageNow!=1){
out.println("<a
href=branch.jsp?pageNow="+(pageNow-1)+">上一页</a>");
}
//显示超链接
for(int
i=1;i<=pageCount;i++){
out.println("<a
href=branch.jsp?pageNow="+i+">["+i+"]</a>");
}
//下一页
if(pageNow!=pageCount){
out.println("<a
href=branch.jsp?pageNow="+(pageNow+1)+">下一页</a>");
}
}catch(Exception
e){
System.out.println("Error
Connection");
e.printStackTrace();
}
%>
</body>
</html>
效果图: