关于jsp页面中的分页显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP页面中分页显示解决方法之一
最近在做一个留言板系统,有点像网上论坛吧,自己只是弄来玩玩,但是当我在数据库中插入很多数据后,就遇到了一个很有意思的问题的,那就是怎么分页来显示这些数据,我在网上看了很多的分页方法,那也是各有千秋,平分秋色。
但是没有一个能像论坛上做的那么好的分页显示方法。
也许是有,只是我没有看到而已。
1.我首先说说这个论坛分页基本设计思路。
大家都知道,论坛分页不可能是显示完全部的页码,而是按照一定的规律来实现的,大概有以下要求。
1.首先要判断页面的总数(Totalpages),如果是Totalpages<=5(当然你也可以自定义)的话,那么就直接把所有的页码都显示出来,如这样【上一页1
2 3 4 5 下一页】,但是当Totalpages超过一定的数值后,就要按一定的规律来处理一
下了,2.当Totalpages>5以后,那么就需要隐藏(不显示)一些页码了,如果在显示部分的中间还有页码,就用(…)来代替,如【上一页1 2 … 5 6 7 …29 30下一页】,
【上一页1 2 …21 22 23 …29 30下一页】,3.最后还有一个问题要处理,那就当前页是最后五页的话,那么按照习惯,应该这样显示,【上一页1 2 …26 27 28 29 30下一页】。
<!--分页部分 -->
<!—使用说明。
TotalPages是总页数,你通过不同数据库采用不同分页方法,在通过在Jsp页面中,把你取得的总页数赋值给TotalPages如(<%TotalPages=object.getTotalPages();%/),在使用当前页(PageNo)传入函数后,在去数据库查询后返回一个List。
如我自己是这样弄的
<%if(request.getParameter("PageNo")!=null){
PageNo=Integer.parseInt(request.getParameter("PageNo"));
}
PageModel pageModel=new PageModel();
ArrayList al=pageModel.getFeyeReuslt(PageNo,pageSizes,lybId);
lyb lyb=null;
for(int i=0;i<al.size();i++){
lyb=(lyb)al.get(i);
%>
<div class="lyneirong">
<div class="lyneirong_left"><img src="images/100.jpg"/>
<span class="bb"><br/><%=lyb.getLyrName()%></span></div>
<div class="lyneirong_right">
<div class="lyneirong_right_up">第<%=lyb.getId()%>楼<%=lyb.getLyDate()%>留言
<span class="cc">回复</span></div>
<div class="lyneirong_right_nr"><%=lyb.getContent()%></div>
说明完 -->
下面是源码:
<div class="fenge">
<%!int TotalPages=30,PageNo=1;var page=”index.jsp?PageNo” %>
<a href="<%=page %>=<%=PageNo-1%>">上一页</a>
if(PageNo<6&&allPages<6){
for(int h=1;h<=allPages;h++){
%>
<a href="<%=page %>=<%=h%>"><%out.print(h);%></a>
<%
out.print(" ");
}
%>
<%//该部分是判断总页数是否小于6,如果总页数小于6,那么显示所有页码。
}else if(PageNo<6 && allPages>6){
for(int h=1;h<6;h++){
%>
<a href="<%=page %>=<%=h%>"><%out.print(h);%></a>
<%
out.print(" ");
}
%>
<a href="#"><%out.print("...");%></a>
<a href="<%=page %>=<%=allPages-1%>"><%out.print(allPages-1);%></a>
<a href="<%=page %>=<%=allPages%>"><%out.print(allPages);%></a>
<%//如果当前页小于6,而且所有页码又大于6,那么就应该显示前五页,并且还要显示最后两页。
}else if(PageNo>5 && PageNo<=(allPages-5)){
%>
<a href="<%=page %>=1"><%out.print("1");%></a>
<a href="<%=page %>=2"><%out.print("2");%></a>
<a href="index.jsp"><%out.print("...");%></a>
<a href="<%=page %>=<%=PageNo-1%>"><%out.print(PageNo-1);%></a>
<a href="<%=page %>=<%=PageNo%>"><%out.print(PageNo);%></a>
<a href="<%=page %>=<%=PageNo+1%>"><%out.print(PageNo+1);%></a>
<a href="index.jsp"><%out.print("...");%></a>
<a href="<%=page %>=<%=allPages-1%>"><%out.print(allPages-1);%></a>
<a href="<%=page %>=<%=allPages%>"><%out.print(allPages);%></a>
<%
//如果当前页是大于5,并且又不是最后几页,那么就这样显示【上一页1 2 …21 22 23 …29 30下一页】
}else if(PageNo>allPages-5){
%>
<a href="<%=page %>=<%=1%>"><%out.print("1");%></a>
<a href="<%=page %>=<%=2%>"><%out.print("2");%></a>
<a href="index.jsp"><%out.print("...");%></a>
<%for(int h=5;h>=0;h--){
%>
<a
href="<%=page %>=<%=allPages-h%>"><%out.print(allPages-h);%></a>
<%
out.print(" ");
}
}
//但当前页是最后五页时,那么应该这样显示。
【上一页1 2 …26 27 28 29 30下一页】%> <a href="<%=page %>=<%=PageNo+1%>">下一页</a>
当前页:<%=PageNo%>/<%=allPages%>
</div>
<!--分页部分 END-->。