免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8961 | 回复: 5
打印 上一主题 下一主题

java 中采用List 分页技术难题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-13 08:12 |只看该作者 |倒序浏览
采用MVC方式开发时,将数据库查询的记录集放入ArrayList对象中,在显示的页面将ArrayList对像展示成表格形式,当使用分页时,由于ArrayList对象是在request中的,所以用<href a >时本页面会失效,真是个难题。

<%
   ArrayList rptdata = (ArrayList)request.getAttribute("rptdata");
  
%>
<%
   
    Iterator data =  rptdata.iterator();
   

    int pnum=1;//页码
    int pagesize=1; //每页20个记录
    String strPage = request.getParameter("page");
    if(strPage!=null)
     {
      pnum=Integer.parseInt(strPage);
     }
     double pcount =rptdata.size()/pagesize;
     int pageCount=1;
     if(pcount>1)
       {
          pageCount=(int)Math.ceil(rptdata.size()/pagesize);
       }
   
    out.println("pcount=="+pcount);
    int line = 1;
    int line1 = (pnum-1)*pagesize+1;
    int line2 = pnum*pagesize;
    //out.println("line1=="+line1);
    //out.println("line2=="+line2);
    double hj=0d;
    while(data.hasNext() )
    {
       gwList gw = (gwList)data.next();
       if (line>=line1 && line<=line2)
       {
     
%>
        <tr>
                <td width="34"><%=line%> </td>
                <td width="140"><%=gw.getInst_name()%> </td>
                <td width="88"><%=gw.getApp_name()%> </td>
                <td width="39" align="center"><%=gw.getApp_sex()%> </td>
                <td width="91"><%=gw.getApp_userid()%> </td>
                <td width="107" align="center"><%=gw.getApp_job()%> </td>
                <td width="69" align="right"><%=gw.getMonth_earning()%> </td>
                <td width="67" align="right"><%=gw.getFamily_pop()%> </td>
                <td width="58" align="right"><%=gw.getFamily_mon_earning()%> </td>
                <td width="71" align="center"><%=gw.getIf_SS()%> </td>
                <td width="55" align="center"><%=gw.getIf_city()%> </td>
                <td width="101" align="right"><%=gw.getAllo_money()%> </td>
                <td width="50" align="center"><%=gw.getStaff_type()%> </td>
        </tr>
        <%   
             }
             hj+=gw.getAllo_money();
            line++;
           }
        %>
        <tr>
                <td width="174" colspan="2">
                <p align="center">合计</td>
                <td width="796" colspan="11">
                <p align="center">共计<%=(--line)%>人,金额共计<%=hj%>元。</td>
        </tr>
</table>
<div style="float:left;clear:right">第<%=pnum%>页  共<%=pageCount%>页  <%if(pnum>1) {%><a href=<%=request.getRequestURL()%>?page=<%=(pnum-1)%>>上一页</a><%}%><%if(pnum<pageCount) {%><a href=<%=request.getRequestURL()%>?page=<%=(pnum+1)%>>下一页</a><%}%></div>

论坛徽章:
0
2 [报告]
发表于 2007-06-13 09:08 |只看该作者

高手在哪里?

高手在哪里?

论坛徽章:
0
3 [报告]
发表于 2007-06-13 09:46 |只看该作者
原帖由 Air_Fish 于 2007-6-13 09:08 发表
高手在哪里?

是做项目吗
你就不知道分页语句吗 上网搜索一下吧

论坛徽章:
0
4 [报告]
发表于 2007-06-14 09:13 |只看该作者
分页不能这么写,你应该在查询数据的时候分页,然后再传回来进行显示,这样的话数据量大也没有关系的;你这种做法也能实现,你把查询的代码也写在jsp中,只是这样的适合于数据量小的时候。
查询数据时最好用OJB、hibernate等ORM组件,这样的话就把分页语句同数据库产品间的耦合降低了,如果换数据库的话只需要改下配置文件就行了。
如果是做项目给用户提供更好的体验方式可以使用ajax,你每次取过来的数据量小一些就可以了。
如果还有更高的要求那就使用或自己做一个分页工具,包括页面排序、表头固定、表的任意列固定等等功能,网上有很多资料可以参考的

论坛徽章:
0
5 [报告]
发表于 2007-06-15 22:17 |只看该作者
不知道你的目的.... 什么 <href a> ?
建议你改 jstl 分页 ...  jsp这个已经淘汰了...

论坛徽章:
0
6 [报告]
发表于 2007-06-16 18:31 |只看该作者
对呀,还是自己写一个工具好啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP