分页技术
来源:互联网 发布:中国编程语言排名 编辑:程序博客网 时间:2024/05/17 15:05
基本思路
1、 定义4个变量
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> <% } %>
身为一个后端小能手,怎么能不写 分页 呢!
虽然这个是copy刘网管(老师)的,数据库也是sql server,但是学会这个技术就好。
大家可以去看刘网管(老师)的博客,里面有jsp系列教程,但是讲的有点浅,不是很详细,O(∩_∩)O~。
http://zhiyongliu.iteye.com/blog/1700891
0 0
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术:
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- 分页技术
- linux 镜像安装系统包
- 杂记
- BZOJ 1013, 球形空间产生器
- 跑得快—扑克牌游戏出牌规则(JavaScript)
- 学习体会
- 分页技术
- 认识共振的自己
- JavaScript笔记(一)
- jQuery插件的使用和写法
- B - Ignatius and the Princess III 整数拆分问题
- HTML_14_jquery_选择器
- C语言学习总结(四)——数据结构
- VirtualBox 下的 Ubuntu没有权限访问共享文件夹
- Struts 2.0