用ajax获取到需要处理的数据,将数组分组,每组500条,一共260组,循环这260组数据,分别处理每一组数据,利用setTimeout函数开启一个新的执行线程异步,防止主线程因渲染大量数据导致阻塞。
JavaScript简称JS是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。
在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
}
运行效果:
你可以用js在弹出窗口的关闭按钮中添加控制opener窗口显示数据的方法。比如说你要向datalist添加新行,用js可以,datalist生成的html代码也只是个table,你可以向这个table添加新行。当然添加进去的新行效果要跟你用后台代码load出来的效果一样,也就是说新行的样式控件等要一样。也可以在关闭按钮只是触发opener的一个js方法,这个js方法可以调用ajax方法去数据库读取数据重新绑定,这样其实不太方便。