在網上看到不少提供web翻頁技術的指導,不過,感覺參考價值不大,所以我總結一下別人的經驗,重寫一次.
大部分網站架構都是基于MVC,通常jsp作為顯示層,或者用模板技術作為顯示層,在此層將會顯示查詢記錄總數,以及當前頁,還有頁面導航,以及顯示改頁的記錄(Model),.servlet通常作為控制層,用于收集查詢條件,調用業務Bean,,完成翻頁查詢,并將結果返回到顯示層.對于分頁來說,每層次的主要任務如下:
顯示層:
取出記錄總數,并顯示出來;
指示當前在第幾頁
顯示翻頁導航條,如象Google那樣的翻頁,或者象yahoo那樣的翻頁風格
取出記錄集,并顯示出來,通常,一頁顯示10-30條,并且,這是可以配置的
控制層:
查詢的時候,將用戶輸入的查詢條將,通常表現形式是QueryValue放入會話中,以便下次翻頁的時候重新取出查詢條件
假如是第一次查詢,調用業務Bean,需要查詢記錄總數,并查詢出第一頁的結果集,并傳到顯示層
假如是其后后的翻頁,則需要調用業務Bean查詢指定范圍內的結果集,并傳到顯示層
業務Bean:
業務Bean提供按照QueryValue查詢出合乎條件總數
業務Bean提供按照QueryValue,以及 范圍(startIndex,endIndex)查詢合乎條件的結果集
現在舉個例子,分別從業務Bean,控制層,顯示層的具體實現來完成分頁,我希望這個例子能被復制使用
業務Bean:
public class BusinuessFacade
{
...........
public int queryBookSize(BookQueryValue qv) throws ....
{
}
public BookValueObject queryBooks(BookQueryValue qv,int startIndex,int endIndex) throws....
{
}
}
public class BookQueryValue
{
public String name;
public String isbn
............
}
控制層,用serlvet舉例
public class BookQueryServelt
{
doGet(HttpServletRequest request, HttpServletResponse response....
{
String offset = request.getParameter("pager.offset");
int startIndex = 0;
int endIndex=0;
BookQueryValue qv = null;
Httpsession session = request.getSession();
if(offset==null)
{
//第一次查詢,需要查出記錄總數
qv = createQueryValue(request);
新聞熱點
疑難解答