12. 分页

本的分页思路
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>
<% } %>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值