我终于理解了JSP 的分页了

js|分页

我们查询数据库的时候,如果查询出来的结果是很多条,比如1000条,那么,如果都显示到一个页面上简直是令人无法忍受的事情!所以我们要分页显示,每页显示10或20行,分页的目的就这样简单.

 

分页的方法有很多种,也许有些效率要高些,我这里只能参考最简单能实现的方法:现查询出有多少条记录,然后计算出一共分几页,然后分别显示每一页.

查询出有多少条记录:

select count(*)from learning

 

计算分多少页:

if(counts%pageSizes==0){pageCounts=counts/pageSizes;}

else{pageCounts=counts/pageSizes+1;}

int i=(intPage-1)*pageSizes;(书上的算法很笨,用我这里自己想的,没有错)

上面就是判断是否最后一页显示满,如, 93条记录,每页显示5条,那么最后一页要显示3条,一共19页显示!开始考虑的时候我考虑100页,哈哈,很特殊的,不具有代表性,看来思维的方法很重要,弱智吧?

 

然后就是分别显示这些页了,

String query=" Select * "+

             " from learning "+

             " where article_id like '%' ";

这里我们遇到麻烦了,如何显示?是先查出5条放在哪里?一个什么样的数据结构里?还是划分数据库的记录的条数?也许从这里我们可以考虑出分页至少有2种方法:这里我们采用后一种,这种方法的内容是:rs的遍历和每页多少条记录的结合:

 

int i=(intPage-1)*pageSizes;//判断每一页能遍历到第几条记录

ps=conn.prepareStatement(query);

ResultSet rs1=ps.executeQuery();

for( int  j=0; j<i ; j++)

rs1.next();//当是第一页的时候,rs从第0条开始,如果是第二页,从第(2-1)*5条元组开始遍历,如果第3页,将从第10条开始遍历

最后: while(rs1.next()&&i<pageSizes){ i++;}很关键,即控制了每页显示的条数,又控制了编历的范围.

最后有一个问题是: ResultSet rs1 为什么不用原先的rs?如果不理解这个,可以说没有理解到这种分页的做法,因为rs在查询记录总数的时候已经指向了第一个,如果继续使用,将从查询出来的第二条记录开始显示了!这个问题是我刚调试好分页时候出现的bug,看来都是先出现问题,再分析原因,再真正理解过程产生的原因.

 

下面还要在显示分页的内容之外加一个from , 里面提供链接来对当前页数的id+1(减1)来显示上一页或下一页的内容!

 

刚理解了分页,就马上记下来,加深印象,更不敢独享领悟后的喜悦!

以下是JSP 分页的代码:

 

 

*****************************

<%Cookie cookies[]=request.getCookies();if(cookies==null){ response.sendRedirect("login.jsp"); }%><%@ include file="articleconn.jsp"%><html>

<head><meta http-equiv="Content-Type" content="text/html; charset=big5"><title>管理文件</title><meta name="GENERATOR" content="Microsoft FrontPage 4.0"><!--link rel="stylesheet" href="css/article.css"--></head>

<%request.setCharacterEncoding("big5");String query=" Select * "+             " from learning "+             " where article_id like '%' ";String queryCount=" select count(*)from learning ";String strPage=request.getParameter("strPage");int intPage;if(strPage==null){intPage=1;}elseintPage=Integer.parseInt(strPage);

int pageSizes=5;int counts=1;int pageCounts=1;

try{PreparedStatement ps=conn.prepareStatement(queryCount);ResultSet rs=ps.executeQuery();if(rs.next()){counts=Integer.parseInt(rs.getString(1));}

%><body bgcolor="#FFFFFF">  <p> </p>  <table width="700" border="1" cellspacing="0" cellpadding="0" align="center" bordercolorlight="#000000" bordercolordark="#FFFFFF">    <tr bgcolor="#99CCFF">      <td height="10" bgcolor="#B5D85E">        <div align="center">          <b>管 理 界 面</b>        </div>      </td>    </tr>    <tr>      <td height="49">        <%-- 分頁 --%>        <p align="left">          <a href="add.jsp">添加信息</a>           <a href="index.jsp">返回首頁</a>        </p>        <table border="1" cellspacing="0" width="90%" bgcolor="#F0F8FF" bordercolorlight="#000000" bordercolordark="#FFFFFF" align="center">          <tr>            <td width="12%" align="center">              <strong>ID 號</strong>            </td>            <td width="13%" align="center">              <b>類 型</b>            </td>            <td width="47%" align="center">              <strong>信 息 名 稱</strong>            </td>            <td width="14%" align="center">              <strong>修 改</strong>            </td>            <td width="14%" align="center">              <strong>刪 除</strong>            </td>          </tr>          <% if(counts%pageSizes==0){pageCounts=counts/pageSizes;}else{pageCounts=counts/pageSizes+1;}int i=(intPage-1)*pageSizes;

ps=conn.prepareStatement(query);ResultSet rs1=ps.executeQuery();for( int  j=0; j<i ; j++)rs1.next();out.println(rs+"<BR><BR><BR> ");out.println(rs.next()); i=0;while(rs1.next()&&i<pageSizes){%>          <tr>            <td width="12%" height="7">              <p align="center">                <%= rs1.getString("article_id")%>              </p>            </td>            <td width="13%" height="7">              <div align="center">                <%= rs1.getString("types")%>              </div>            </td>            <td width="47%" height="7">              <%= rs1.getString("title")%>            </td>            <td width="14%" align="center" height="7">              <a href="edit.jsp?id=<%=rs1.getString("article_id")%>">修 改</a>            </td>            <td width="14%" align="center" height="7">              <a href="delete.jsp?id=<%=rs1.getString("article_id")%>">刪 除</a>            </td>          </tr>          <% i++;}%>        </table>        <%

}catch(SQLException se1){se1.printStackTrace();}finally{}

stmt.close(); conn.close(); %>      </td>    </tr>  </table><form action="manage.jsp" method="post" >第<%=intPage%>頁,共<%=pageCounts%>頁<%if(intPage<pageCounts)%><a href="manage.jsp?strPage=<%=intPage+1%>">下一頁</a><%if(intPage>1)%><a href="manage.jsp?strPage=<%=intPage-1%>">上一頁</a>

</form>

  <P> </P></body>

</html>

时间: 2024-10-30 18:58:16

我终于理解了JSP 的分页了的相关文章

jsp/javabean分页列出数据

js|分页|数据 我的第一个jsp分页代码 jsp文件:pagedata.jsp //显示数据 javabean:DataConn.java //连接数据库 javabean:GetCount.java //获得数据记录数 DataConn.java文件内容: package aliang_org;import java.sql.*;public class DataConn{ public static Connection getDataConn() { Connection conn =

javabean servlet jsp实现分页功能代码解析_java

前端实现用ligerUI实现分页,感觉用框架确实简单,闲着无聊,模拟着liger的分页界面实现了一遍(只要是功能,样式什么无视)  这里用基础的三层架构+servlet+jsp实现,思路很简单,把所有分页相关信息写入到一个pagebean类里面,service返回这个bean类,每次分页查询时都从该bean里查找信息.只是其中的细节问题比较繁琐,如边界处理(前端和后台边界都要处理),下拉框跳转后要显示当前页等等  这是ligerUI实现的分页样式(实现过程我的上一篇博客有写:http://www

java-利用Java,JSP查询分页

问题描述 利用Java,JSP查询分页 要求从数据库中查询数据,并用网页的分页效果显示.要求有上一页,下一页,当前页码, 解决方案 jsp如何进行查询分页jsp查询结果分页 解决方案二: JavaScript很多开源的框架都有分页,你去搜一个吧,至于后台怎么写,你可以看看分页技术相关的资料,方法很多,如果是mysql,感觉相对容易些,用Limit 解决方案三: jsp如何进行查询分页 jsp查询结果分页

java-oa系统怎么使用jdbc链接数据库调用查询方法最后在jsp上分页显示???

问题描述 oa系统怎么使用jdbc链接数据库调用查询方法最后在jsp上分页显示??? 表名:users , 用户字段:realname 要求 效果: 解决方案 http://blog.csdn.net/aaabendan/article/details/5442144 解决方案二: http://download.csdn.net/detail/zhai56565/5885775 解决方案三: JdbcTemplate类 package com.cloudwebsoft.framework.db

jsp的分页显示问题,怎么将下面的代码分成三页显示?求大神指点

问题描述 jsp的分页显示问题,怎么将下面的代码分成三页显示?求大神指点 简单的代码如下 <%@ page contentType="text/html; charset=gb2312" language="java"%> <html> <body> 第一个页面<br> 第二个页面<br> 第三个页面<br> <a href="change.jsp">上一页<

jsp + wml 分页

问题描述 请问jsp+wml分页如何实现?有没有例子可以给我参考 解决方案 解决方案二:有没有做过这方面的高手告诉我下...解决方案三:杯具啊,没有人来回答...

JSP通用分页框架_JSP编程

写一个通用的分页框架,这样在项目里面如果想实现分页功能,只需要稍加改动参数就可以实现分页处理了.这样写了会节省很多时间. 一.分页类 既然要分页那么我们就要考虑建一个通用的分页类,里面需要的参数一般有: 总页数 totalPage 总共记录数 totalRecord 每页显示数 pageSize 当前页pageIndex 承载当前页数据的集合 List datas 完整代码:Page.java import java.util.List; public class Pager<E> { /**

求一个完整的纯hibernate+jsp的分页显示数据的代码

问题描述 求一个完整的纯hibernate+jsp的分页显示数据的代码.要直接可以运行的项目哦,配合oracle数据库.邮箱:fengsi530@163.com 解决方案 解决方案二:付多少钱??解决方案三:引用1楼wenjie4892543的回复: 付多少钱?? +1说的好,多少钱?好久没看到上来就要代码的了解决方案四:晕还要钱

JSP自定义分页标签TAG全过程_JSP编程

首先我们需要在WEB-INF/tld/目录下创建page.tld文件 <?xml version="1.0" encoding="ISO-8859-1"?> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>page</short-name> <u