繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> 资料/其它 >> 我终于理解了JSP 的分页了

我终于理解了JSP 的分页了

2005-03-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:我们查询数据库的时候,如果查询出来的结果是很多条,比如1000条,那么,如果都显示到一个页面上简直是令人无法忍受的事情!所以我们要分页显示,每页显示10或20行,分页的目的就这样简单. 分页的方法有很多种,也许有些...
关键字:终于 JSP

我们查询数据库的时候,如果查询出来的结果是很多条,比如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

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

最后: while(rs1.next()&&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"%>

管理文件

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

%>

管 理 界 面
<%-- 分頁 --%>

添加信息 返回首頁

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

");out.println(rs.next()); i=0;while(rs1.next()&&i

<% i++;}%>
ID 號 類 型 信 息 名 稱 修 改 刪 除

<%= rs1.getString("article_id")%>

<%= rs1.getString("types")%>
<%= rs1.getString("title")%> ">修 改 ">刪 除
<%

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

stmt.close(); conn.close(); %>

第<%=intPage%>頁,共<%=pageCounts%>頁<%if(intPage">下一頁<%if(intPage>1)%>">上一頁

责任编辑:admin
相关文章