關(guān)于分頁經(jīng)驗(yàn)不是很多,讓我來做分頁,我習(xí)慣用這樣的一種方法,以前用ASP和PHP的時(shí)候也是這樣來處理的。也沒怎么認(rèn)真去檢查是否科學(xué),不過先做出來再說,交出一個(gè)不怎么好的作品總比交不出作品好。不好的話還可以去完善和優(yōu)化嘛。

          首先,先創(chuàng)建一個(gè)顯示每一頁(有若干條數(shù)據(jù))的方法(如下面的hfindAll方法),決定好每一頁接收一個(gè)頁碼參數(shù),然后顯示該頁碼里的數(shù)據(jù)。比如有100條數(shù)據(jù),那么分10頁,那第幾頁顯示第幾條至第幾條數(shù)據(jù)。然后再創(chuàng)建一個(gè)方法是用于在view層顯示頁數(shù)(如下面的amountPage方法),最后是在view層上為每一頁數(shù)的數(shù)字加上超鏈接。

          以下是主要代碼:
          public class LoginDAO extends HibernateDaoSupport {
          private int PageSize =5;
          /*設(shè)置每頁的數(shù)據(jù)條數(shù)*/

           public Integer amountPage(){
               Session session =this.getSession();
            Query query = session.createQuery("from Login");
            query.setCacheable(true);
            int a = query.list().size()%PageSize;
          /*總記錄數(shù)/每頁數(shù)據(jù)數(shù),判斷是否能整除*/
            Integer amount;
            if(a!=0){
             amount = query.list().size()/PageSize+1;
          /*如果整除有余數(shù),則頁數(shù)加1*/
            }else{
             amount = query.list().size()/PageSize;
          /*如果整除沒余數(shù),則直接總記錄數(shù)/每頁數(shù)據(jù)數(shù)*/
            }
            return amount;
           }

           public List hfindAll(String pagenum) {
               Session session =this.getSession();
            Query query = session.createQuery("from Login");
            if (pagenum == null){
          /*如果pagenum是空,則數(shù)據(jù)從第一條開始*/
            query.setFirstResult(0);
          /*設(shè)置查詢開始的第幾條數(shù)據(jù),這里是從第1條開始*/
            query.setMaxResults(PageSize);
          /*設(shè)置查詢數(shù)據(jù)條數(shù),這里是5條*/
            query.setCacheable(true);
          /*設(shè)置一級(jí)緩存*/
            }else{
             Integer p = (Integer.valueOf(pagenum)-1) * PageSize;
             query.setFirstResult(p);
             query.setMaxResults(PageSize);
             query.setCacheable(true);
            }
            return query.list();
           }
          }

          然后需要解決的是一些數(shù)據(jù)傳遞,類型轉(zhuǎn)換和在view層顯示的問題,主要代碼如下:

          在ACTION里:
          String strpagenum = request.getParameter("pagenum");
            List results= loginManage.hfind(strpagenum);
            Integer amountPage = loginManage.amountPage();
              if(results!=null){
                       HttpSession session=request.getSession();
                       session.setAttribute("results",results);
                       session.setAttribute("amountPage",amountPage);
                       return mapping.findForward("ok");
                   }
              return mapping.findForward("fail");

          在view視圖里:
          顯示每頁數(shù)據(jù)的代碼:

           <logic:iterate id="element" name="results">    <tr>
             <td width="100"><input type="checkbox" name="select" value="<bean:write name="element" property="id"/>"><bean:write name="element" property="id"/></td>
             <td width="100"><bean:write name="element" property="name"/> </td>
             <td width="100"><bean:write name="element" property="password"/></td>
             </tr></logic:iterate>

          顯示頁碼的代碼:
          <%
             int i;
            int a=Integer.parseInt(session.getAttribute("amountPage").toString());
             for (i=1;i<=a;i++){
             out.println("<tr>");  
                    out.println("<td><a href='display.do?pagenum="+ i +"'>"+ i +"</a></td>");    
                    out.println("</tr>");    
             }
              %>


          posted on 2008-01-10 18:55 lzj520 閱讀(2948) 評(píng)論(6)  編輯  收藏 所屬分類: Struts1Spring個(gè)人學(xué)習(xí)日記Hibernate
          主站蜘蛛池模板: 焦作市| 衡东县| 化州市| 九龙县| 抚宁县| 瑞安市| 涟源市| 河曲县| 徐水县| 阿拉尔市| 广宗县| 洛隆县| 德阳市| 合川市| 望城县| 龙南县| 壶关县| 蕉岭县| 三江| 汕头市| 文水县| 永嘉县| 师宗县| 奎屯市| 榆树市| 石城县| 北海市| 遂宁市| 天峻县| 静宁县| 西贡区| 四平市| 宁波市| 安义县| 竹山县| 新密市| 清流县| 讷河市| 思茅市| 桐庐县| 台南市|