`
zhiyongliu
  • 浏览: 126300 次
  • 性别: 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  

相关推荐

    Net分页典型--2.rar

    12. 分页参数校验:防止恶意用户通过修改URL参数造成数据混乱,需要对页码和每页大小进行合理限制。 综合以上,"Net分页典型--2.rar"很可能包含了一些.NET平台下的分页实现示例,包括但不限于ADO.NET、Entity ...

    12种分页代码.rar

    本压缩包“12种分页代码.rar”包含10种不同的分页代码实现,这些实现可能涵盖了多种编程语言和库,如JavaScript、PHP、Python、Java等,以及可能使用的前端框架如jQuery、Vue.js或React。 1. **基础概念**:分页...

    网页多种分页样式及CSS

    12. 颜色主题:根据网站的主题颜色,定制分页颜色方案,确保设计一致性。 13. 响应式设计:通过媒体查询实现分页在不同设备上的适配,确保在手机、平板和桌面电脑上都能良好显示。 14. 拖拽分页:允许用户通过拖动...

    JAVA分页大全.txt

    根据提供的文件信息,我们可以深入探讨Java分页技术的相关知识点,特别是Struts框架中的分页实现。下面将详细介绍分页的基本概念、Struts框架中的分页处理方式以及如何使用自定义的`PageController`类来实现分页功能...

    操作系统第三章 存储管理 期末测试复习题及答案.pdf

    12. 分页和分段系统都提供与实际物理地址空间同样大的用户逻辑地址空间。 13. 分页是由操作系统感知的,用于实现内存管理的技术。 14. 分页存储的目的是提高内存利用率,减少外部碎片。 15. 具有快表的页式系统中...

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

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

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

    在实际开发中,数据量较大的时候,分页查询是非常重要的功能,能够有效地提高系统的性能和用户体验。本篇笔记主要围绕MyBatis如何实现分页查询进行深入探讨。 在传统的SQL查询中,我们通常会使用LIMIT和OFFSET来...

    个人-计算机操作系统第四章.docx

    12. 分页系统中,若页表在内存,CPU取数据可能需要访问两次内存(页表和数据所在页)。 13. 快表使得内存访问时间缩短,内存平均存取时间在80%命中率下为1.2us。 14. 碎片现象导致内存空间利用率降低,因为未使用...

    24种分页样式

    12. **动态加载分页**:点击分页按钮后,内容以动画效果逐渐展现,增加互动感。 13. **分页与搜索结合**:在分页组件中集成搜索功能,方便用户按关键词筛选内容。 14. **响应式分页**:根据屏幕大小自动调整布局,...

    样式 24种分页样式

    12. 徽章样式:在页码旁添加徽章,表示该页有未读或特殊状态的内容。 13. 渐进式加载:仅加载可视区域的分页项,提高网页加载速度。 14. 按需加载:用户点击分页按钮后才加载相应内容,节省资源。 15. 鼠标悬停...

    JSP+JDBC_真分页(基于Oracle数据库分页).

    本主题聚焦于使用JSP和JDBC在Oracle数据库上实现真正的分页功能。在Web开发中,分页是提高用户体验的关键技术,尤其是在处理大量数据时,它能让用户更有效地浏览和查找所需信息。这里我们将深入探讨如何结合Java ...

    《操作系统》试题库-判断题资料.pdf

    12. 分页式存储管理中,页的大小是固定的。 四、文件管理 13. 联机用户接口是指用户与操作系统之间的接口,它不是命令接口。 五、设备管理 14. SPOOLing系统实现设备管理的虚拟技术,即:将独占设备改造为共享...

    微机原理与接口技术-期末考试题1.doc

    12. 分页管理:PENTIUM保护模式下的分页管理使用页表存放页基地址,用于动态映射虚拟地址到物理地址。 13. 基址、变址、相对寻址:这种寻址方式结合了基址寄存器、变址寄存器和相对偏移地址来确定操作数位置。 14....

    JavaWeb10-分页应用.rar

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

    Manning.LINQ.in.Action

    12. 分页和排序:`Skip`和`Take`用于实现分页,`OrderBy`和`OrderByDescending`用于进行升序和降序排序。 13. 并行查询(PLINQ):在.NET 4.0及更高版本中,引入了并行LINQ(Parallel LINQ),允许开发者利用多核...

    JSP精心收藏的21种分页方法

    12. **无限滚动分页**:类似懒加载,但用户无需手动翻页,内容随着滚动自动加载,常用于社交媒体。 13. **基于前端组件的分页**:如React、Vue、Angular等现代前端框架提供的分页组件,可实现高度定制化和高性能...

    Javascript分页效果(收集了很多强大的JS分页代码)

    这个压缩包中的文件名看起来像是不同版本的JavaScript分页插件或者代码示例,例如`12_154640_a8zdJSpage0.06v20050426`可能是某个版本的分页插件,`0.06`可能是版本号,`20050426`可能是发布日期。每个文件可能包含...

    甘肃专升本计算机复习资料-操作系统-复习资料 (2).docx

    12. 分页存储管理:分页系统通过页表映射逻辑地址到物理地址,可能因缺页而产生中断。 13. 段共享:通过共享段表实现多个进程对同一段的共享。 14. 文件物理结构:顺序文件、索引文件和索引顺序文件是常见的文件...

    12 分页 分页 打印一页数据

    在IT行业中,分页是一种非常常见的技术,尤其是在大数据量的Web应用中,它能帮助用户更有效地浏览和管理大量的信息。本主题将深入探讨“分页”这一概念,特别是与JDBC(Java Database Connectivity)相关的分页实现...

    轻松搞定ExtJS.pdf

    #### 12. 分页与ComboBox - **分页**: 对大量数据进行分批显示的技术。 - **实现**: 使用ExtJS提供的分页工具栏进行配置。 #### 13. 面板(Panel) - **Panel类**: 用于创建可自定义布局的容器。 - **布局管理**: ...

Global site tag (gtag.js) - Google Analytics