在servlet的service()方法中只需进行如下 *** 作:
PageControl pageCtl = yourBusinessObject.listData(req.getParameter("jumpPage"))
req.setAttribute("pageCtl",pageCtl)
说明:yourBusinessObject封装了商业逻辑,是位于Business Logic Layer中的一个对象,运用OOAD的方法,封装商业对象,在Persistent Layer之上组建坚实的Business Logic Layer同样是构建大型电子商务架构的关键所在。本文的关注点只是分页处理,暂不详细论述.
在每个想要实现翻页显示数据的jsp页面中,我们的工作也很简单,其代码是公式化的:
<jsp:useBean id="pageCtl" class="yourpackage.PageControl" scope="request"></jsp:useBean>
<%if(pageCtl.maxPage!=1)){%>
<form name="PageForm" action="/servlet/yourpackage.yourservlet" method="post">
<%@ include file="/yourpath/pageman.jsp"%>
</form>
<%}%>
说明:
if(pageCtl.maxPage!=1)实现了这样一个逻辑:如果所取得数据不足一页,那么就不用进行翻页显示。
我们注意到<%@ include file="/yourpath/pageman.jsp"%>这使得真正的翻页部分完全得到了重用.
那么pageman.jsp到底做了些什么呢?它实现了经常做翻页处理的人耳熟能详的逻辑
(A)第一页时不能再向前翻;
(B)最后一页时不能再向后翻;
同时能够进行页面任意跳转,具体代码如下:
每页<%=pageCtl.rowsPerPage%>行
共<%=pageCtl.maxRowCount%>行
第<%=pageCtl.curPage%>页
共<%=pageCtl.maxPage%>页
<BR>
<%if(pageCtl.curPage==1){ out.print(" 首页 上一页") }else{ %>
<A HREF="javascript:gotoPage(1)">首页</A>
<A HREF="javascript:gotoPage(<%=pageCtl.curPage-1%>)">上一页</A>
<%}%>
<%if(pageCtl.curPage==pageCtl.maxPage){ out.print("下一页 尾页") }else{ %>
<A HREF="javascript:gotoPage(<%=pageCtl.curPage+1%>)">下一页</A>
<A HREF="javascript:gotoPage(<%=pageCtl.maxPage%>)">尾页</A>
<%}%>
转到第<SELECT name="jumpPage" onchange="Jumping()">
<% for(int i=1i<=pageCtl.maxPagei++) {
if (i== pageCtl.curPage){
%>
<OPTION selected value=<%=i%>><%=i%></OPTION>
<%}else{%>
<OPTION value=<%=i%>><%=i%></OPTION>
<%}}%>
</SELECT>页
最后附上用于页面跳转的javascript公共函数:
function Jumping(){
document.PageForm.submit()
return
}
function gotoPage(pagenum){
document.PageForm.jumpPage.value = pagenum
document.PageForm.submit()
return
}
运行效果:
处理方式:一:首先sql语句,使用not in的方式处理,
在dao类里写一个方法
public List<>getAllByPage(int pageSize,pageNum){
......
String sql="select top"+pageSize +" * from 表名x where 字段A not in (select top "+pageSize*(pageNum-1)+" 字段A from 表名x)"
.......
rerun list
}
其中,pageSize是页面要显示的条数,pageNum是要显示的页码,sql语句是固定的,返回一个list对象。
二:在Biz里写一个方法,调用Dao里的getAllByPage方法,传入两个参数,返回list结果集。
三:在jsp页面以url传参的方式进行页面处理和数据的显示。
使用request对象获取传入的值,进行强制类型转作为参数,传入到Biz业务类的方法中处理,返回list结果集,使用表达式的方式在页面中进行显示。
您好如果要在jsp页面里实现按你要求分页的话,你可以循环方式这样写
for(int i=初始纪录树i<最大记录数i++){
list.add(从数据库取出的又放进去的ArrayList<对象>)
}
之后在从list里取用循环取出并输出在前台页面。这里的初始记录数为(currentPage-1)*pageSize,这里的最大记录数为currentPage*pageSize。
每次请求都是该页面,而仅仅是***.jsp?currentPage=?这个问号不同而已。
当然不赞成把JAVA代码放在JSP页面,因为它仅仅是用来展示而尽量不要参与逻辑业务。要放在控制层或业务层。比如说去请求servlet。
并且一次取所有数据的分页并不适合当数据量很大的时候。可以使用数据库分页。如mysql 用top,oracle用rownum。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)