成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談JSP下的Hibernate分頁技術

開發 后端
分頁在任何系統中都是非常頭疼的事情,有的數據庫在語法上支持分頁,而有的數據庫則需要使用可滾動游標來實現,并且在不支持可滾動游標的系統上只能使用單向游標逐步接近要取得的數據。Hibernate提供了一個支持跨系統的分頁機制,這樣無論底層是什么樣的數據庫都能用統一的接口進行分頁操作。本文講述的是JSP下的Hibernate分頁技術。

這是我知道的代碼最少且最簡潔的一種Hibernate分頁技術了,自己懶,所以拼命減少代碼量,呵呵。下面用人能看得懂的語言細說一下,關于Hibernate的分頁技術,無外乎兩種:

1. 從數據庫中取得記錄,在內存中再劃分。但如果遇到記錄數很大的時候效率很成問題。

2. 采用Hibernate的物理分頁,每次只是取一頁。從客戶端傳進來的是第幾頁和每頁多少條記錄,要首先查詢符合記錄的總記錄數,再根據總記錄數和當前頁,每頁記錄數可以算出要取的是數據庫中的第幾條記錄。但2次查詢不可避免了。

所以總結了兩種方式的優劣,如果數據量不是非常大的話(百萬以上),采用***種方法,否則可選擇第二種。

由于我要操作的數據庫信息量沒有達到大的標準,所以我采用了***種方法,下面細說。

首先看一下我的一個action:

public ActionForward queryZcDoc(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) 
{
   IZcDocService zcDocService=(IZcDocService)       
   Application.getInstance().getBean("zcDocServiceProxy");
   List docList=zcDocService.queryZcDoc();
   request.setAttribute("doc", subMessList);
   return mapping.findForward("queryDoc");
}

很簡單的代碼,就是查詢數據,扔到一個List里面,然后setAttribute,再在jsp頁面顯示就可以了。

接下來談分頁,考慮到了簡潔性和通用性,我把分頁的代碼單獨封裝到了一個類里面去,下面看看這個類:

public class Fenye {
 public List fenye(ActionMapping mapping, ActionForm form,
     HttpServletRequest request, HttpServletResponse response){
 
    List list=(ArrayList) request.getAttribute("list");
/*

這里有人可能就看不懂了,為什么要帶這些參數?因為我上面的action方法是分頁之前的方法,所以不能看出來。

下面貼一下用到分頁之后的action方法:

public ActionForward queryZcDoc(ActionMapping mapping, ActionForm form,
     HttpServletRequest request, HttpServletResponse response) {
 
    IZcDocService zcDocService=(IZcDocService)Application.getInstance().
getBean("zcDocServiceProxy");
    List docList=zcDocService.queryZcDoc();
 
  request.setAttribute("list", docList);
    List subMessList=new Fenye().fenye(mapping, form, request, response);
 
    request.setAttribute("doc", subMessList);
    return mapping.findForward("queryDoc");
  }

和上面的一比較,其實就多了兩行代碼,為的就是保持頁面的簡潔性而使用調用的方法,然后再將需要的數據返回。

那接著往下看:

*/
  List subMessList=null;  //這個到時候存的是用分頁技術之后的要顯示的記錄
    int showCount =5;     //每頁顯示的記錄數。
    int showPage = 1;     //當前顯示頁碼數。
    int size =list.size();     //所取得的數據的總條數。
    int pageCount = (size-1)/showCount + 1;  //需要顯示的總頁數
    if(size

到了這里,java代碼就寫完了,不多吧加括號一共33行。接下來就要到jsp里面去顯示了。也是為了頁面的整潔和通用性,我把分頁顯示的東東放到了一個jsp里面。下面看這個jsp:

<%@ page language="java" pageEncoding="gb18030"%>
 <div align=center>
  <br>
 
     <%
     String method=request.getParameter("method");

method這個參數呢,是要區別對待具體那個action的那個方法

String action=request.getParameter("action");

action這個參數的作用,看下面就知道了

 int showPage = ((Integer)(request.getAttribute("showPage"))).intValue();
        int size = ((Integer)(request.getAttribute("size"))).intValue();
           int pageCount = ((Integer)(request.getAttribute("pageCount"))).intValue();
           int page1=showPage-1;
           int page2=showPage+1;
           int LastPage=pageCount;
         
          %>
           
      <%    
           out.println("總共有"+size+"條記錄&nbsp");

         out.println("總共有"+pageCount+"頁&nbsp");
           out.println("當前是第"+showPage+"頁&nbsp");
               if(showPage > 1)
              {
                 out.println("<a href='"+action+".do?method="+method+"&page=1'>***頁</a>");    
              }
              else
              {
                 out.println("***頁");
          }
           %>    

                  <%
                      if(showPage > 1)    
                      {

        out.println("<a href='"+action+".do?method="+method+"&page="+page1+"'>上一頁</a>");    
                      }

      else
             {                     

        out.println("上一頁");    

             }
                  %>

                <%
                      if(showPage < pageCount)    
                      {
                        out.println("<a href='"+action+".do?method="+method+"&page="+page2+"'>下一頁</a>");    
                      }
                      else
                      {
                        out.println("下一頁");    
                      } 
                  %>
                
                <%
                    if(showPage<pageCount)    
                    {

                    out.println("<a href='"+action+".do?method="+method+"&page="+LastPage+"'>尾頁</a>");    
                    }

                  else    
                    {

      out.println("尾頁");

                  }
                  %>
                
  </div>

關于這個jsp的代碼,不用解釋太多了吧。再有就是具體的顯示頁面中,用<jsp:include page="../fenye.jsp?action=link"></jsp:include>語句將它包含到相應為止就可以了。

【編輯推薦】

  1. 高性能、高彈性JSP和Servlet性能優化
  2. JSTL和EL開發JSP頁面的優勢及實現
  3. Tomcat下JSP經典配置實例
責任編輯:楊鵬飛 來源: 天下無藍的空間
相關推薦

2009-09-22 16:49:42

Hibernate分頁

2009-06-05 09:52:25

struts分頁Hibernate

2009-09-23 17:07:31

Hibernate C

2009-09-21 13:05:18

Hibernate u

2009-09-28 15:47:59

Hibernate O

2009-06-15 13:46:00

netbeans配置hibernate

2009-09-28 13:43:28

使用Hibernate

2009-09-25 10:53:40

Hibernate S

2009-09-29 10:46:58

Hibernate領域

2009-09-22 10:09:21

Hibernate S

2009-07-06 15:58:11

JSP程序

2009-09-21 18:13:11

Hibernate S

2009-09-23 10:19:08

Hibernate分頁

2009-09-23 14:40:17

Hibernate F

2009-07-01 10:01:33

JSP分頁查詢MySQL數據庫

2009-09-29 16:16:58

Hibernate H

2009-07-06 17:46:41

JSP網站

2009-09-25 09:21:27

Hibernate元數

2009-09-22 13:41:10

直接使用Hiberna

2009-09-27 10:02:29

定制Hibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草网免费 | 亚洲成人精品一区二区 | 亚洲一区 中文字幕 | 性欧美精品一区二区三区在线播放 | 成人一区二区三区在线观看 | 国产一区二区三区在线免费 | 91小视频| 国产区在线 | 亚洲综合视频 | 久草网址| av大片| 91精品国产欧美一区二区成人 | 日韩一区二区福利视频 | 久久精品视频9 | 一区二区三区国产精品 | 国产午夜在线观看 | 日韩播放 | 一区二区三区福利视频 | 亚洲国产精品成人 | 一级黄色片在线看 | 久久成人激情 | 精品一区二区三区在线视频 | 成人在线精品视频 | 日韩一区二区三区精品 | 成人免费看片 | 日韩中文字幕免费在线 | 日韩www | 久热久热 | 国产亚洲精品久久午夜玫瑰园 | japanhd美女动 | 久久青草av| 99精品一区 | 亚洲黄色一级 | 日韩国产在线 | 国产在线视频三区 | 91精品国产91久久久久青草 | 久久这里只有精品首页 | 色一情一乱一伦一区二区三区 | 国产精品视频一区二区三区 | 91精品国产综合久久久密闭 | 欧美日韩国产一区二区 |