晕 分页的方法简直多的不象样。
方案1:存储过程
     把条件,页码,每页记录数传给后台,后台交给存储过程,存储过程直接返回需要的数据。
方案2:javabean控制。
     把条件,页码,每页记录数传给处理的bean,bean挑选出需要的数据包装返回。
方案3:静态翻页
      所有数据在本地,数据存放方式有xml数据池,json对象或者自接是js的数组。用脚本控制静态翻页。
还有可以利用近来流行的ajax来做翻页,但是实质还是属于方案1,2

解决方案 »

  1.   

    数据分页的方法:
    public final DataList resultList(final AdminEntityBean entity,final int currentPage,final int pageSize) {
            List resultList=new ArrayList();
            try {
                Criterion catCriterion=null;
                if(entity!=null) {  //如果是有栏目的文章,则读取该栏目以及所有子栏目的文章
                    AdminCatAbstractService catService=(AdminCatAbstractService)this.getDomainCatService();
                    catCriterion=Expression.in("catEntity",catService.getChildCat(String.valueOf(entity.getId()),true));
                }
                Session session=HibernateUtil.getSession();
                HibernateUtil.beginTransaction();            Criteria criteria=session.createCriteria(this.getDomainClass());
                if(entity!=null)
                    criteria.add(catCriterion);
                resultList=criteria.setFirstResult((currentPage-1)*pageSize)
                                   .setMaxResults(pageSize)
                                   .addOrder(Order.desc("topProperty"))
                                   .addOrder(Order.desc("id"))
                                   .list();
                HibernateUtil.commitTransaction();
            }catch(HibernateException err) {
                LoggerUtil.error(err);
                HibernateUtil.rollbackTransaction();
            }finally {
                HibernateUtil.closeSession();
            }
            DataList dataList=new DataList(resultList,currentPage,pageSize,this.resultCount(entity));
           
            return dataList;
        }这是分页时的JSP:
    <!--
    分页组件。简化分页的操作。
    数据集必须置于Context中的results对象中。即request.setAttribute(“results”,对象);
    每次操作都会导致form的提交,送出去两个参数,currentPage和paging,currentPage是当前页,paging指示现在在分页,一般在接受端处理currentPage就可以了。
    <-->
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ include file="/web/include/taglib.jsp" %>
    <form action="<%=request.getRequestURL()%>" name="pagerForm" method="post" target="_self">
    <%
    java.util.Map map=request.getParameterMap();
    java.util.Iterator it=map.keySet().iterator();
    while(it.hasNext()){
    String key=(String)it.next();
    String value=((String[])map.get(key))[0];
    if(!"currentPage".equals(key)&&!"pageCount".equals(key)&&!"paging".equals(key))
    {
    %>
    <input type="hidden" name="<%=key%>" value="<%=value%>"/>
    <%
    }
    }
    %>
    <table border="0" align="right" cellspacing="0" addspacing="0">
    <tr>
    <td align="center" valign="baseline">
          共<c:out value="${results.rowsCount}"/>条
        </td>
       <td align="center">
        第<c:out value="${results.currentPage}"/>页
                 共<c:out value="${results.pageCount}"/>页
                 <c:if test="${results.currentPage>1}"><span style="cursor:hand" onclick="firstPage()">首页</span></c:if><c:if test="${results.currentPage==1}">首页</c:if>
                 <c:if test="${results.currentPage>1}"><span style="cursor:hand" onclick="prevPage()">上一页</span></c:if><c:if test="${results.currentPage==1}">上一页</c:if>
                 <c:if test="${results.currentPage<results.pageCount}"><span style="cursor:hand" onclick="nextPage()">下一页</span></c:if><c:if test="${results.currentPage==results.pageCount}">下一页</c:if>
                 <c:if test="${results.currentPage<results.pageCount}"><span style="cursor:hand" onclick="lastPage()">尾页</span></c:if><c:if test="${results.currentPage==results.pageCount}">尾页</c:if>
                 转至<input name="currentPage" type="text" size="1" value="<c:out value='${results.currentPage}'/>" onkeypress="keypress()">页&nbsp;<input type="submit" name="jumpButton" value="GO" onclick="jumpPage()"/>
            <input type="hidden" name="pageCount" value="<c:out value='${results.pageCount}'/>">
            <input type="hidden" name="paging">
       </td>
      </tr>
    </table>
    </form>
    <script language="Javascript">
    var form = document.all.pagerForm;
    function keypress(){ 
    form.paging.value=1;
    if (window.event.keyCode==13){ 
    jumpPage();
    }

    }
    function nextPage(){
    form.paging.value=1;
    form.currentPage.value = (form.currentPage.value-0) + 1;
    form.submit();
    }
    function prevPage(){
    form.paging.value=1;
    form.currentPage.value = form.currentPage.value - 1;
    form.submit();
    }
    function firstPage(){
    form.paging.value=1;
    form.currentPage.value = 1;
    form.submit();
    }
    function lastPage(){
    form.paging.value=1;
    form.currentPage.value = form.pageCount.value;
    form.submit();
    }
    function jumpPage(){
    form.paging.value=1;
    var page = form.currentPage.value;
    if( page < 1 || isNaN( parseInt(page))) {
    form.currentPage.value = 1;
    }

    if( (page-0) > (form.pageCount.value-0) ) {

    form.currentPage.value = form.pageCount.value;
    }
    }
    </script>然后在你的页面中导入就行了数据显示的Action中调用那个方法resultList();
      

  2.   

    分页就是一些条件而已啊几乎每种数据库都提供了类似的机制
    MSSQL top
    Oracle rownum
    MySQL limit
      

  3.   

    http://dev.csdn.net/develop/article/29/29140.shtm
      

  4.   

    直接在数据库层操作分页啊,如果你用的是hb那就更轻松了,yixinyue() 说得很清楚了.
    另外直接操作JDBC也可以实现分页,不过稍微麻烦一点,网上应该也有现成代码.
    记住一定要在数据库层分页,否则效率将非常低下.