真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何解析Hibernate在JSP下的分頁技術(shù)

這篇文章將為大家詳細講解有關(guān)如何解析Hibernate在JSP下的分頁技術(shù),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、維西網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為維西等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

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

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

所以總結(jié)了兩種方式的優(yōu)劣,如果數(shù)據(jù)量不是非常大的話(百萬以上),采用***種方法,否則可選擇第二種。由于我要操作的數(shù)據(jù)庫信息量沒有達到大的標(biāo)準(zhǔn),所以我采用了***種方法,下面細說。

首先看一下我的一個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");  }

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

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

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

這里有人可能就看不懂了,為什么要帶這些參數(shù)?因為我上面的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");  }

和上面的一比較,其實就多了兩行代碼,為的就是保持頁面的簡潔性而使用調(diào)用的方法,然后再將需要的數(shù)據(jù)返回。那接著往下看:

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

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

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

method這個參數(shù)呢,是要區(qū)別對待具體那個action的那個方法

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

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

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+"條記錄 ");   out.println("總共有"+pageCount+"頁 ");  out.println("當(dāng)前是第"+showPage+"頁 ");  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>

關(guān)于“如何解析Hibernate在JSP下的分頁技術(shù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網(wǎng)站標(biāo)題:如何解析Hibernate在JSP下的分頁技術(shù)
標(biāo)題URL:http://weahome.cn/article/gshjjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部