基 本的分页思路
1、定义四个变量
int page_persize=2;//每页显示记录数
int page_total=0;//总的页数
int page_now=1;//当前页码
int rs_total=0;//总的记录数
2、读取所有记录给rs
String sql="select * from userlist ";
ResultSet rs = connDbBean.executeQuery(sql);
3、计算总记录数rs_total
rs.last();//指针到最后一条记录
rs_total=rs.getRow();//读出当前行号即总的记录数
4、计算总页数
if (rs_total % page_persize==0)
page_total=rs_total/page_persize;
else
page_total=rs_total/page_persize+1;
5、得到当前的页码
try{
if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
}catch(java.lang.NumberFormatException e){
out.print("指定页码格式不正确"+e);
}
if (page_now==0) page_now=1;
6、根据页码使指针指向相应页码的第一条记录
rs.absolute((page_now-1)*page_persize+1);
7、判断是否有记录并使用for循环显示当前页的记录
rs.previous();
for(int i=1;i<=page_persize;i++)
{
if (!rs.next()) break;//如果记录数不够则中断循环
}
8、显示页码导航(方式灵活多样,不再赘述)
<p align=center>
<%
//显示页码导航,其中的问号表示由当前页面处理。
out.print("总共"+rs_total+"条记录 ");
if (page_total>1){
out.print("当前第"+page_now+"页 ");
out.print("共"+page_total+"页 ");
if(page_now!=1) {
out.print("<a href=?page_now=1>首页</a> ");
out.print("<a href=?page_now="+(page_now-1)+">上一页</a> ");
}
if(page_now!=page_total){
out.print("<a href=?page_now="+(page_now+1)+">下一页</a> ");
out.print("<a href=?page_now="+page_total+">尾页</a> ");
}
%>
<form action="?" method="post"><!--问号表示由当前页面处理 -->
<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">跳转到:
<input name="page_now" type="text" size="3" />
<input name="submit" type="submit" value="提交" />
</div></td>
</tr>
</table>
</form>
<% } %>
</p>
例1:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>read</title>
</head>
<body style="text-align:center">
<a href="add.jsp">add</a>
<form method='post' action="search.jsp">
<input type="text" name="str">
<input type="submit" value="search">
</form>
<table border="1" cellspacing="0" cellpadding="3">
<tr>
<td>id</td>
<td>title</td>
<td>content</td>
<td>删除</td>
<td>编辑</td>
</tr>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=dataBase;user=sa;password=sa;";
Connection conn = DriverManager.getConnection(connectionUrl);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//定义四个变量
int page_persize=2;//每页显示记录数
int page_total=0;//总的页数
int page_now=1;//当前页码
int rs_total=0;//总的记录数
//产生结果集
String sql="select * from dataTableName";
ResultSet rs=stmt.executeQuery(sql);
//计算总的记录数
rs.last();//指针到最后一条记录
rs_total=rs.getRow();//读出当前行号即总的记录数
//计算总的页数
if (rs_total % page_persize==0)
page_total=rs_total/page_persize;
else
page_total=rs_total/page_persize+1;
//计算当前页码
try{
if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
}catch(java.lang.NumberFormatException e){
out.print("指定页码格式不正确"+e);
}
if (page_now==0) page_now=1;
//指针跳转到要访问的页码的第一条记录
rs.absolute((page_now-1)*page_persize+1);
//循环显示当前页码的内容
for(int i=1;i<=page_persize;i++)
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><a href="del.jsp?id=<%=rs.getString("id")%>">删除</a></td>
<td><a href="edit.jsp?id=<%=rs.getString("id")%>">编辑</a></td>
</tr>
<%
if (!rs.next()) break;//如果记录数不够则中断循环
}
//关闭
rs.close();
stmt.close();
conn.close();
%>
</table><br>
<%
//显示页码导航,其中的问号表示由当前页面处理。
out.print("总共"+rs_total+"条记录 ");
if (page_total>1){
out.print("当前第"+page_now+"页 ");
out.print("共"+page_total+"页 ");
if(page_now!=1) {
out.print("<a href=?page_now=1>首页</a> ");
out.print("<a href=?page_now="+(page_now-1)+">上一页</a> ");
}
if(page_now!=page_total){
out.print("<a href=?page_now="+(page_now+1)+">下一页</a> ");
out.print("<a href=?page_now="+page_total+">尾页</a> ");
}
%>
<form action="?" method="post">
<!--问号表示由当前页面处理 -->
<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">跳转到:
<input name="page_now" type="text" size="3" />
<input name="submit" type="submit" value="提交" />
</div></td>
</tr>
</table>
</form>
<% } %>
</body>
</html>
例2:使用了javabean
<%
int page_persize=2;//每页显示记录数
int page_total=0;//总的页数
int page_now=1;//当前页码
int rs_total=0;//总的记录数
String sql="select * from userlist";
ResultSet rs=connDbBean.executeQuery(sql);
rs.last();//指针到最后一条记录
rs_total=rs.getRow();//读出当前行号即总的记录数
if (rs_total % page_persize==0)
page_total=rs_total/page_persize;
else
page_total=rs_total/page_persize+1;
try{
if (!(request.getParameter("page_now")==null || request.getParameter("page_now").equals("")))
page_now=Math.min(Math.abs(Integer.parseInt(request.getParameter("page_now"))),page_total);
}catch(java.lang.NumberFormatException e){
out.print("指定页码格式不正确"+e);
}
if (page_now==0) page_now=1;
rs.absolute((page_now-1)*page_persize+1);
for(int i=1;i<=page_persize;i++)
{
//循环体
if (!rs.next()) break;//如果记录数不够则中断循环
}
rs.close();
connDbBean.closeStmt();
connDbBean.closeConn();
//显示页码导航,其中的问号表示由当前页面处理。
out.print("总共"+rs_total+"条记录 ");
if (page_total>1){
out.print("当前第"+page_now+"页 ");
out.print("共"+page_total+"页 ");
if(page_now!=1) {
out.print("<a href=?page_now=1>首页</a> ");
out.print("<a href=?page_now="+(page_now-1)+">上一页</a> ");
}
if(page_now!=page_total){
out.print("<a href=?page_now="+(page_now+1)+">下一页</a> ");
out.print("<a href=?page_now="+page_total+">尾页</a> ");
}
%>
<form action="?" method="post"><!--问号表示由当前页面处理 -->
<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">跳转到:
<input name="page_now" type="text" size="3" />
<input name="submit" type="submit" value="提交" />
</div></td>
</tr>
</table>
</form>
<% } %>