利用組件對翻頁邏輯進行封裝–JSP及JSP頁面的翻頁

來源:互聯網
上載者:User
在以列表的形式顯示資料時需要對頁面進行翻頁控制,基本在項目的各模組中都會用到。為了最大限度地實現翻頁的可重用和易移植,利用組件的形式對翻頁邏輯進行封裝。

翻頁控制器的分析

描述:

翻頁控制器用來實現對WEB頁面的翻頁內容的顯示和翻頁的各種操作的控制。通過JSP調用,將分頁內容顯示到WEB頁面。它支援多種方式和風格的顯示。

翻頁控制器的設計

下面分別建立翻頁控制器的一個PageConfig類、一個Page類、一個PageView類。

· PageConfig.java


PageConfig
聲明 public class
描述 這個類用來儲存頁面屬性的值,如每頁顯示幾行等。
超類  
執行  

屬性描述


屬性 屬性描述 定義
[PageConfig]    
|--PAGE_SIZE 頁大小 public static final int
|--PAGE_SIZE_SMALL 小型頁面的大小 public static final int
|--PAGE_SIZE_NORMAL 正常頁面的大小 public static final int
|--PAGE_SIZE_BIG 大型頁面的大小 public static final int
|--PAGE_SIZE_BIGGER 較大頁面的大小 public static final int
|--PAGE_SIZE_BIGGEST 最大頁面的大小 public static final int

· Page.java


Page
聲明 public class
描述 這個類用來儲存頁面屬性的值,如每頁顯示幾行等。
超類  
執行 java.lang.Serializable

屬性描述


屬性 名稱 屬性描述 資料類型
|--EMPTY_PAGE 空白頁面 描述一個空白頁面,即不含內容的頁面。 Page對象
|--objects 結果集列表 結果集列表 java.util.List或java.util.Vector
|--start 開始記錄號 開始記錄號,從0開始 正整數和0
|--end 結束記錄號 結束記錄號 正整數和0
|--viewStart 顯示在頁面開始記錄號 顯示在頁面開始記錄號,從1開始 正整數
|--viewEnd 顯示在頁面結束記錄號 顯示在頁面結束記錄號 正整數
|--hasPrevious 是否有上一頁的開關 是否有上一頁的開關 布爾值
|--previousPageNumber 上一頁的頁碼 上一頁的頁碼 正整數和0
|--hasNext 是否有下一頁的開關 是否有下一頁的開關 布爾值
|--nextPageNumber 下一頁的頁碼 下一頁的頁碼 正整數和0
|--total 總行數 一共有多少行記錄 正整數和0
|--totalPage 總頁數 一共有多少頁  
|--currentPageNumber 當前頁 描述當前是第幾頁 正整數和0
|--pageSize 頁大小 描述每頁有多少行 正整數和0

構造器


構造器 構造器描述 參數
[Page]    
|--Page(List l, int s, boolean hasNext) 建立頁面 l 結果集s 開始記錄號,從0開始hasNext 是否有下一頁的開關
|--Page(List l, int s, boolean hasNext, int total) 建立頁面 l 結果集s 開始記錄號,從0開始hasNext 是否有下一頁的開關total 一共有多少行記錄
|--Page(List l, int s, int size, boolean hasNext, int total) 建立頁面 l 結果集s 開始記錄號,從0開始size 每頁有多少行hasNext 是否有下一頁的開關total 一共有多少行記錄
|-- Page(List l, int num, int size, int total) 建立頁面 l 結果集num 當前是第幾頁size 每頁有多少行total 一共有多少行記錄
|-- Page(List l) 建立頁面,不進行分頁 l 結果集

方法


方法 方法描述 傳回值
[Page]    
|--autoCalculate () 自動計算,根據當前頁、頁大小、總行數計算出其它屬性的值 private void
|--getList() 獲得結果集 public List
|--getViewStart() 獲得顯示在頁面的開始記錄號,從1開始 public int
|--getViewEnd() 獲得顯示在頁面的結束記錄號 public int
|--hasNextPage() 是否有下一頁 public boolean
|--hasPreviousPage () 是否有上一頁 public boolean
|--getPreviousPageNumber () 獲得上一頁的頁碼 public int
|--getNextPageNumber () 獲得下一頁的頁碼 public int
|--getTotal () 獲得結果集中記錄總行數 public int
|--getTotalPage () 獲得總頁數 public int
|--getCurrentPageNumber () 獲得當前頁碼 public int
|--getPageSize () 獲得每頁多少行記錄 public int
|--getStartOfNextPage () 獲得下一頁在結果集中開始的記錄號,從0開始 public int
|--getStartOfPreviousPage () 獲得上一頁在結果集中開始的記錄號,從0開始 public int
|--getSize() 獲得當前頁包括的記錄行數 public int
|--isEmpty() 判斷當前頁面是否是空白頁面,如果當前頁面是空白頁面,返回true,否則,返回false public boolean

PageView.java


PageView
聲明 public class
描述 通過JSP調用,將分頁內容顯示到WEB頁面。不支援圖片、按鈕等,只支援文字。用法:在JSP頁面按如下形式定義: <% PageView view = new PageView(request,out,page); %>按預設形式顯示<% view.setVisible(true); %>按指定形式顯示<% view.setVisible(true,0,1); %>
超類  
執行  

屬性描述


屬性 名稱 屬性描述 資料類型
[PageView]      
|--currentUrl 當前頁面的URL 當前頁面的URL 字串
|--style 風格 風格 字串
|--useSquareBrackets 是否加[]的開關 在"上一頁"兩邊是否加上"["和"]" 布爾值
|--page WEB頁面 WEB頁面 Page對象

構造器


構造器 構造器描述 參數
[PageView]    
|-- PageView (HttpServletRequest request,JspWriter out,Page page)) 建立一個分頁內容 request 用戶端請求out 頁面輸出對象page WEB頁面

方法


方法 方法描述 傳回值
[PageView]    
|--setVisible(boolean visible) 按預設形式顯示分頁內容,如果visible為true,則顯示分頁內容,否則,不顯示分頁內容 public void
|--setVisible(boolean visible,int style,int order) 按指定形式顯示分頁內容,如果visible為true,則顯示分頁內容,否則,不顯示分頁內容 public void
|--setVisible(boolean visible,boolean useSquareBrackets,int style,int order) 按指定形式顯示分頁內容,如果visible為true,則顯示分頁內容,否則,不顯示分頁內容 public void
|--viewPage(boolean useSquareBrackets,int style,int order) 按指定形式顯示分頁內容,order為0,表示完整形式,按如下順序顯示:共計:18 分頁:2 當前頁:1 每頁:10 首頁 前頁 後頁 尾頁 轉到□□□□order為1,表示簡潔形式,按如下順序顯示:前頁 後頁 尾頁 1/2order為2,表示完整形式2,按如下順序顯示:共計:18 每頁:10 轉到□□□□ 首頁 前頁 後頁 尾頁 1/2 public void

翻頁控制器的編碼

只需按翻頁控制器的設計進行編碼,這裡不用再講了。

翻頁控制器組件的原始碼

a)PageConfig.java

b)Page.java

c)PageView.java

原始碼:立即下載

翻頁控制器的調用

翻頁控制器的調用實在太簡單了,調用方法:

· 匯入翻頁控制器包


<%@ page import="java.util.List,com.cwap.oa.controller.web.page.Page,com.cwap.oa.controller.web.page.PageView"%>

· 建立一個Page對象,Page.EMPTY_PAGE為空白頁面


Page page = Page.EMPTY_PAGE;

· 建立一個PageView對象


<% PageView view = new PageView(request,out,page); %>

· 顯示分頁的內容:

按預設形式顯示


<% view.setVisible(true); %>

按指定形式顯示


<% view.setVisible(true,0,1); %>

· 調用翻頁控制器的例子

下面是在論壇板塊中的一個JSP中調用的樣本,用來顯示所有的論壇板塊列表,下面只列出部分代碼:


<%@ page language="java"%><%@ page contentType="text/html; charset=GBK"%><%@ page import="java.util.List, com.cwap.oa.controller.web.page.PageView,com.cwap.oa.controller.web.page.Page"%><jsp:useBean id="forumBoardHelper" scope="page" class="com.club8090.forum.forumboard.client.ForumBoardClientHelper"/><%String tmp=request.getParameter("pageNumber");int pageNumber = 0;if(tmp==null || tmp.equals("")){pageNumber = 1;}else{try {  pageNumber = Integer.parseInt(tmp);}catch(java.lang.NullPointerException npe){  pageNumber = 1;}catch(java.lang.NumberFormatException nfe){  pageNumber = 1;}}Page page = Page.EMPTY_PAGE;//page初始化為Page.EMPTY_PAGE空白頁面page = forumBoardHelper.getAllForumBoards(pageNumber);%>…<table><tr><td>NO.</td><td>名稱</td><td>描述摘要</td></tr><%List items = page.getList();if( items.isEmpty() ) {out.println("<tr colspan=3>沒有記錄存在</tr>");}else{  int no;//頁面中顯示的行數  for (int i = 0; i < items.size(); i++) {    ForumBoardModel forumBoardModel = (ForumBoardModel)items.get(i);     no = page.getViewStart() + i;%>//顯示記錄列表<tr><td><%= no %></td><td><%= forumBoardModel.getName() %></td><td><%= forumBoardModel.getSummary() %></td></tr><%  }  PageView view = new PageView(request,out,page);  view.setVisible(true,0,1);}%></table>…

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.