溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP下的Hibernate分頁技術詳細介紹

發(fā)布時間:2021-09-07 09:00:34 來源:億速云 閱讀:118 作者:chen 欄目:編程語言

這篇文章主要講解了“JSP下的Hibernate分頁技術詳細介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSP下的Hibernate分頁技術詳細介紹”吧!

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

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

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

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

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

首先看一下我的一個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<SHOWCOUNT) pre < } subMessList; return Integer(size)); request.setAttribute(?size?,new Integer(pageCount)); request.setAttribute(?pageCount?,new Integer(showPage)); request.setAttribute(?showPage?,new subMessList="list;" { else if((showPage*showCount)

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

<%@ page language="java" pageEncoding="gb18030"%>
 <div align=center>
<br>

<% 
String method=request.getParameter("method");

method這個參數呢,是要區(qū)別對待具體那個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>語句將它包含到相應為止就可以了。

感謝各位的閱讀,以上就是“JSP下的Hibernate分頁技術詳細介紹”的內容了,經過本文的學習后,相信大家對JSP下的Hibernate分頁技術詳細介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI