`
zhiyongliu
  • 浏览: 123672 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

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>
<% } %>

 

 

 

分享到:
评论
1 楼 Loner_It 2015-11-16  

相关推荐

    aspnetpager.dll分页控件

    我见过的分页控件中最简 你可以到http://blog.csdn.net/laolaowhn/archive/2007/12/29/2002769.aspx 查看说明

    12种分页代码.rar

    12种分页代码 写的很详细

    C#多功能支持长文章分页控件(功能强大无比,并包含例子)

    功能:此控件支持以下全部的分页功能与例子 1.长文章分页(用分页符)(C#) 2.长文章分页(按字节长度分页)...12.RadioButtonList(C#)控件 13.DropDownList(C#)控件 14.ListBox(C#)控件 15.读取分页图片(C#) 16.读取Xml(C#)

    Hibernate中的query 分页.doc

    12. List userList = query.list(); 13. for (Iterator iter=userList.iterator(); iter.hasNext();) { 14. User user = (User)iter.next(); 15. System.out.println(user.getId()); 16. System.out.println...

    12 分页 分页 打印一页数据

    12 分页 分页 打印一页数据

    【MyBatis学习笔记四】——MyBatis分页.zip

    【MyBatis学习笔记四】——MyBatis分页.zip 博客地址:https://blog.csdn.net/weixin_43817709/article/details/117399631

    JavaWeb10-分页应用.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细.........JavaWeb10-分页应用.rar JavaWeb11-图片验证码.rar JavaWeb12-文件上传.rar JavaWeb13-过滤器与监听器.rar

    Java物联网企业级项目亿可控项目实战

    │ 12.加载虚拟机.mp4 │ 13.数据库建表.mp4 │ 14.配置中心.mp4 │ 15.工程结构解析.mp4 │ 17.核心代码解析-创建指标.mp4 │ 18.添加设备需求分析与结构设计.mp4 │ 21.添加设备-3.mp4 │ 23.根据设备Id...

    c#分页源码

    通用分页控件c#源码(downmoon收集) 采用工厂模式,提供标准化接口!支持 DataGrid 及 Repeater分页使用方法:新建两个解决方案 一为Pager,一为webtest 下载后请将两个解决方案合并一下,即新的解决方案包括两个...

    前端框架Foundation5教程.zip

    12.下拉菜单 13.折叠列表 14.列表 15.选项卡 16.分页 17.价格表 18.顶部导航栏 19.侧边栏 20.滑动导航 21.麦哲伦导航 22.表单 23.输入框 24.开关 25.滑块 26.提示框 27.模态框 28.Joyride 29.均衡器 30.网格系统 31....

    ADO.NET笔记(完整版,word格式)

    ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库。 本文档包括以下知识: 1.组成部分 2.最简单的Ado&Connection; 3.关于using ...12.分页查询 13.JOIN 14.LEFT JOIN 15.RIGHT JOIN 16.视图

    分页条控件

    this.PageBar1.SizeOfPage = 12; SqlConnection con = PublicClass.GetConnection(\"server=.;uid=he;pwd=123;database=test\"); SqlCommand cmd = PublicClass.GetCommand(\"page\", con); cmd.CommandType...

    无忧网络文章管理系统

    0817更新: ...2.改进搜索插件 3.增加评论功能 4.增加中文转拼音功能 5.修正前一个版本放在子目录需要修改大量参数的问题 6.生成GoogleSitemaps ...12.分页列表样式可以const.asp里修改 13.其他小改动等

    自己整理的一些网站常用JS效果1

    11.给放大的分页.html 12.关闭此页面时会提醒你加入书签.html 13.划过链接鼠标变手型.html 14.可供选择大小.html 15.可记录cookie的优酷小提示.html 16.可收缩和弹起的网页消息对话框.html 17.可左右平滑滚动的产品...

    JS分页效果JS分页效果

    body {font-size: 12px;} /* Pages Main Tyle */ .pages { color: #000000; cursor: default; font-size: 10px; font-family: Tahoma, Verdana; padding: 3px 0px 3px 0px; } .pages .count, .pages .number, ...

    PHP 分页排序遍历目录

    PHP 分页排序遍历目录 ... 原先在网络上找遍历分页的时候 ...07→20101021125546.txt → 2010 21 10 12:55:46 08→20101017200134.txt → 2010 17 10 20:01:34 共2页 每页8条共有15条信息 当前第1页 首页 上页 下页 尾页

    飞思卡尔MC9S12系列单片机地址影射以及分页问题.doc

    飞思卡尔MC9S12系列单片机地址影射以及分页问题.doc

    分页处理的PHP类.zip

    Windows NT分页文件的基本原则 Windows NT最初通过在物理RAM的数量上加上12MB以设定开始的分页文件大小。这12MB考虑到在系统故障时分页文件内容可被倾倒到一个日志中以防万一。如果看见了“停止”框和接着出现蓝屏...

    Java 面试宝典

    12、静态变量和实例变量的区别? ............................................................................. 12 13、是否可以从一个 static 方法内部发出对非 static 方法的调用? ...........................

    精通WindowsAPI.pdf

    第1章 Windows应用程序开发入门..........................................................................................16 1.1 第一个实例程序...............................................................

Global site tag (gtag.js) - Google Analytics