在開發過程中,我們經常會從資料庫中查詢資料,然後在客戶端顯示出來。當資料少時,可以在乙個頁面顯示。當我們查詢幾百條以上資料,直接顯示在乙個頁面上,不僅瀏覽不方便,查詢效率也會受到影響,這是,我們就可以使用分頁查詢來解決這個問題。
分析上面這個頁面,想要實現分頁,我們在頁面中需要顯示的資料有:
本頁的資料列表
recordlist
當前頁currentpage
總頁數pagecount
每頁顯示多少條
pagesize
總記錄數
recordcount
頁碼列表的開始索引
beginpageindex
頁碼列表的結束索引
endpageindex
實現分頁需要顯示這麼多資料,所以我們就可以為分頁功能來封裝乙個pagebean實體,用來接收頁面傳來的引數,以及為action提供從資料庫查詢出來的資料。
我們可以把頁面顯示的資料分為三類:
1.指定的或是頁面引數:currentpage,pagesize.
2.資料庫查詢的資料:recordcount,recordlist.
3.通過計算得到:pagecount,beginpageindex,endpageindex.
這樣就可以只接收前4個必要的屬性,自動計算出其他3個屬性的值。
我們可以先分析一下大概的思路,首先jsp頁面負責顯示資料,action用來接收頁面傳來的引數,並呼叫service準備需要的資料,service實現了資料訪問的功能,從資料庫中查詢出需要的資料,通過封裝的pagebean實體返回給action。
action中準備分頁資訊的**/** 分頁功能中一頁的資訊 */
public class pagebean
//總頁數多於10頁,則顯示當前頁附近的共10個頁碼
else
//當後面的頁碼不足5個時,則顯示後10個頁碼
if(endpageindex > pagecount)
} }
//這裡是get,set
}
service中查詢資料庫的**// **********=分頁用的引數**********==
private int pagenum = 1;// 當前頁
private int pagesize = 10;// 每頁顯示多少條記錄
//這裡省略了get,set方法
// 準備分頁資訊(將pagebean放在棧頂)
pagebean pagebean = replyservice.getpagebeanbytopic(pagenum,pagesize,topic);
actioncontext.getcontext().getvaluestack().push(pagebean);
public pagebean getpagebeanbyforum(int pagenum, int pagesize, forum forum)
jsp頁面接收資料(這裡只顯示了分頁控制項的實現,當前頁顯示的資料列表recordlist繫結到對應的位置就可以了。):
到現在,我們已經實現了乙個簡單的分頁查詢功能。那麼我們繼續想,如果我們其他頁面實現分頁查詢功能,還需要再copy一遍上面的**嗎?這麼做顯然不是科學的方法,我們就會繼續封裝一些公共的**,靈活的供各個功能呼叫。比如說現在能想到的優化的地方:頁次:$/$頁
每頁顯示:$條 總記錄數:$條
src="$/style/blue/images/pageselector/firstpage.png" //>$$
src="$/style/blue/images/pageselector/lastpage.png" //> 轉到: $
1.action中公共的分頁引數
2.service中除了查詢的hql語句和引數不同,具體的套路都差不多,我們可不可以傳遞hql和對應的引數,呼叫乙個公共的方法?
3.jsp頁面上相同的分頁**,寫在乙個公共的頁面中,需要分頁時,直接引用這個頁面就好了。
真分頁和假分頁
假分頁 從資料庫一次性取出所有資料繫結到控制項上,再將所有資料根據每頁顯示記錄條數進行分頁。使用gridview控制項來達到分頁的功能 資料繫結 using system using system.collections.generic using system.linq using system....
Jsp分頁例項 真分頁
網頁的分頁功能的實現比較簡單,實現方法也多種多樣。今天總結乙個簡單的jsp真分頁例項。首先,提到分頁就要先明確乙個概念,何為真分頁何謂假分頁。假分頁 一次性從資料庫讀出表的所有資料一次性的返回給客戶端,由js來控制每一頁的顯示。真分頁 由程式控制,每一次只返回一頁大小的資料,顯示到客戶端。由此可以很...
EF導航屬性真分頁查詢
在最近做的人事檔案重構專案中,由於需求要求不要用檢視 儲存過程等,而且這個專案資料庫欄位的數量實在是令人髮指,就我負責的綜合資訊查詢來說,乙個頁面要顯示7張表的資料,欄位加起來都百八十個了。首先看一下資料庫結構 basicinfomation是基本資訊表,主鍵是nowtechnicalrecords...