隨筆-57  評(píng)論-202  文章-17  trackbacks-0

                在網(wǎng)頁(yè)編程中,經(jīng)常需要利用分頁(yè)顯示數(shù)據(jù),下面是我的分頁(yè)顯示的例子。
                先說我的設(shè)計(jì)思路:
                1.首先用一個(gè)PageData類保存頁(yè)面相關(guān)的數(shù)據(jù),有三個(gè)域:
                      a.一個(gè)Collection域,用于保存頁(yè)面顯示的數(shù)據(jù)集合;
                      b.一個(gè)表示當(dāng)前頁(yè)數(shù)的int域;
                      c.一個(gè)表示最大頁(yè)數(shù)的int域。
                2.一個(gè)Action實(shí)現(xiàn),TurnPageAction用于控制頁(yè)面的翻轉(zhuǎn)。它需要一個(gè)ActionForm實(shí)例,這個(gè)實(shí)例保存TurnPageAction需要的一些數(shù)據(jù),在Struts1.1以后,完全可以用一個(gè)DynaActionForm實(shí)現(xiàn),因?yàn)槲疫@個(gè)例子是在用Struts1.0時(shí)實(shí)現(xiàn)的,所以就保留了下來。
                下圖是我的實(shí)現(xiàn)流程圖:
          page.JPG

                PageData類代碼:

            1import java.util.Collection;
            2
            3/**
            4 * <p>Title: </p>
            5 * <p>Description: </p>
            6 * <p>Copyright: Copyright (c) 2003</p>
            7 * <p>Company: </p>
            8 * @author George Hill
            9 * @version 1.0
           10 */

           11
           12public class PageData {
           13
           14  /**
           15   * 每頁(yè)顯示的數(shù)據(jù)行數(shù)
           16   */

           17  public final static int NUMBER_PER_PAGE = 15;
           18
           19  /**
           20   * 保存頁(yè)面顯示的數(shù)據(jù)集合
           21   */

           22  protected Collection list;
           23
           24  /**
           25   * 當(dāng)前頁(yè)數(shù)
           26   */

           27  protected int page;
           28
           29  /**
           30   * 最大頁(yè)數(shù)
           31   */

           32  protected int maxPage;
           33
           34  /**
           35   * 無參構(gòu)造方法
           36   */

           37  public PageData() {}
           38
           39  /**
           40   * 構(gòu)造方法
           41   * @param list 數(shù)據(jù)集
           42   * @param page 當(dāng)前頁(yè)數(shù)
           43   * @param maxPage 最大頁(yè)數(shù)
           44   */

           45  public PageData(Collection list, int page, int maxPage) {
           46    this.list = list;
           47    this.page = page;
           48    this.maxPage = maxPage;
           49  }

           50
           51  /**
           52   * 獲得數(shù)據(jù)集合
           53   * @return 數(shù)據(jù)集合
           54   */

           55  public Collection getList() {
           56    return this.list;
           57  }

           58
           59  /**
           60   * 設(shè)置數(shù)據(jù)集合
           61   * @param list 新的數(shù)據(jù)集合
           62   */

           63  public void setList(Collection list) {
           64    this.list = list;
           65  }

           66
           67  /**
           68   * 獲得當(dāng)前頁(yè)數(shù)
           69   * @return 當(dāng)前頁(yè)數(shù)
           70   */

           71  public int getPage() {
           72    return this.page;
           73  }

           74
           75  /**
           76   * 獲得上頁(yè)頁(yè)數(shù)
           77   * @return 上頁(yè)頁(yè)數(shù)
           78   */

           79  public int getPrePage() {
           80    int prePage = page - 1;
           81
           82    if (prePage <= 0)
           83      prePage = 1;
           84
           85    return prePage;
           86  }

           87
           88  /**
           89   * 獲得下頁(yè)頁(yè)數(shù)
           90   * @return 下頁(yè)頁(yè)數(shù)
           91   */

           92  public int getNextPage() {
           93    int next = page + 1;
           94
           95    if (next > maxPage)
           96      next = maxPage;
           97
           98    return next;
           99  }

          100
          101  /**
          102   * 設(shè)置當(dāng)前頁(yè)數(shù)
          103   * @param page 當(dāng)前頁(yè)數(shù)新值
          104   */

          105  public void setPage(int page) {
          106    this.page = page;
          107  }

          108
          109  /**
          110   * 獲得最大頁(yè)數(shù)
          111   * @return 最大頁(yè)數(shù)
          112   */

          113  public int getMaxPage() {
          114    return this.maxPage;
          115  }

          116
          117  /**
          118   * 設(shè)置最大頁(yè)數(shù)
          119   * @param maxPage 最大頁(yè)數(shù)新值
          120   */

          121  public void setMaxPage(int maxPage) {
          122    this.maxPage = maxPage;
          123  }

          124
          125  /**
          126   * 獲得首頁(yè)標(biāo)識(shí)
          127   * @return 首頁(yè)標(biāo)識(shí)
          128   */

          129  public boolean isFirstPage() {
          130    if (this.page <= 1)
          131      return true;
          132
          133    return false;
          134  }

          135
          136  /**
          137   * 獲得末頁(yè)標(biāo)識(shí)
          138   * @return 末頁(yè)標(biāo)識(shí)
          139   */

          140  public boolean isLastPage() {
          141    if (this.page >= this.maxPage)
          142      return true;
          143
          144    return false;
          145  }

          146}

          147

                TurnPageForm類代碼:

            1import javax.servlet.http.*;
            2import org.apache.struts.action.*;
            3
            4/**
            5 * <p>Title: </p>
            6 * <p>Description: </p>
            7 * <p>Copyright: Copyright (c) 2003</p>
            8 * <p>Company: </p>
            9 * @author George Hill
           10 * @version 1.0
           11 */

           12
           13public class TurnPageForm extends ActionForm{
           14  
           15  /**
           16   * 要跳轉(zhuǎn)的頁(yè)碼
           17   */

           18  protected int page;
           19
           20  /**
           21   * 跳轉(zhuǎn)按鈕
           22   */

           23  protected String turn;
           24
           25  /**
           26   * 首頁(yè)按鈕
           27   */

           28  protected String first;
           29
           30  /**
           31   * 上一頁(yè)按鈕
           32   */

           33  protected String preview;
           34
           35  /**
           36   * 下一頁(yè)按鈕
           37   */

           38  protected String next;
           39
           40  /**
           41   * 末頁(yè)按鈕
           42   */

           43  protected String last;
           44
           45  /**
           46   * 跳轉(zhuǎn)地址
           47   */

           48  protected String url;
           49
           50  /**
           51   * 當(dāng)前頁(yè)碼
           52   */

           53  protected int currentPage;
           54
           55  /**
           56   * 最大頁(yè)碼
           57   */

           58  protected int maxPage;
           59
           60  /**
           61   * 獲得跳轉(zhuǎn)頁(yè)碼
           62   * @return 跳轉(zhuǎn)頁(yè)碼
           63   */

           64  public int getPage() {
           65    return this.page;
           66  }

           67
           68  /**
           69   * 設(shè)置跳轉(zhuǎn)頁(yè)碼
           70   * @param page 跳轉(zhuǎn)頁(yè)碼值
           71   */

           72  public void setPage(int page) {
           73    this.page = page;
           74  }

           75
           76  /**
           77   * 獲得跳轉(zhuǎn)按鈕值
           78   * @return 跳轉(zhuǎn)按鈕值
           79   */

           80  public String getTurn() {
           81    return this.turn;
           82  }

           83
           84  /**
           85   * 設(shè)置跳轉(zhuǎn)按鈕值
           86   * @param turn 跳轉(zhuǎn)按鈕值
           87   */

           88  public void setTurn(String turn) {
           89    this.turn = turn;
           90  }

           91
           92  /**
           93   * 獲得首頁(yè)按鈕值
           94   * @return 首頁(yè)按鈕值
           95   */

           96  public String getFirst() {
           97    return this.first;
           98  }

           99
          100  /**
          101   * 設(shè)置首頁(yè)按鈕值
          102   * @param first 首頁(yè)按鈕值
          103   */

          104  public void setFirst(String first) {
          105    this.first = first;
          106  }

          107
          108  /**
          109   * 獲得上一頁(yè)按鈕值
          110   * @return 上一頁(yè)按鈕值
          111   */

          112  public String getPreview() {
          113    return this.preview;
          114  }

          115
          116  /**
          117   * 設(shè)置上一頁(yè)按鈕值
          118   * @param preview 上一頁(yè)按鈕值
          119   */

          120  public void setPreview(String preview) {
          121    this.preview = preview;
          122  }

          123
          124  /**
          125   * 獲得下一頁(yè)按鈕值
          126   * @return 下一頁(yè)按鈕值
          127   */

          128  public String getNext() {
          129    return this.next;
          130  }

          131
          132  /**
          133   * 設(shè)置下一頁(yè)按鈕值
          134   * @param next 下一頁(yè)按鈕值
          135   */

          136  public void setNext(String next) {
          137    this.next = next;
          138  }

          139
          140  /**
          141   * 獲得末頁(yè)按鈕值
          142   * @return 末頁(yè)按鈕值
          143   */

          144  public String getLast() {
          145    return this.last;
          146  }

          147
          148  /**
          149   * 設(shè)置末頁(yè)按鈕值
          150   * @param last 末頁(yè)按鈕值
          151   */

          152  public void setLast(String last) {
          153    this.last = last;
          154  }

          155
          156  /**
          157   * 獲得跳轉(zhuǎn)地址
          158   * @return 跳轉(zhuǎn)地址
          159   */

          160  public String getUrl() {
          161    return this.url;
          162  }

          163
          164  /**
          165   * 設(shè)置跳轉(zhuǎn)地址
          166   * @param url 跳轉(zhuǎn)地址
          167   */

          168  public void setUrl(String url) {
          169    this.url = url;
          170  }

          171
          172  /**
          173   * 獲得當(dāng)前頁(yè)碼
          174   * @return 當(dāng)前頁(yè)碼
          175   */

          176  public int getCurrentPage() {
          177    return this.currentPage;
          178  }

          179
          180  /**
          181   * 設(shè)置當(dāng)前頁(yè)碼
          182   * @param page 當(dāng)前頁(yè)碼值
          183   */

          184  public void setCurrentPage(int page) {
          185    this.currentPage = page;
          186  }

          187
          188  /**
          189   * 獲得最大頁(yè)碼
          190   * @return 最大頁(yè)碼
          191   */

          192  public int getMaxPage() {
          193    return this.maxPage;
          194  }

          195
          196  /**
          197   * 設(shè)置最大頁(yè)碼
          198   * @param page 最大頁(yè)碼
          199   */

          200  public void setMaxPage(int page) {
          201    this.maxPage = page;
          202  }

          203
          204  /**
          205   * 重置屬性
          206   * @param mapping action映射
          207   * @param request HTTP請(qǐng)求
          208   */

          209  public void reset(ActionMapping mapping, HttpServletRequest request) {
          210    this.page = 0;
          211    this.turn = null;
          212    this.first = null;
          213    this.preview = null;
          214    this.next = null;
          215    this.last = null;
          216    this.url = null;
          217    this.currentPage = 0;
          218    this.maxPage = 0;
          219  }

          220
          221}

          222

                TurnPageAction代碼:

           1import java.io.*;
           2import javax.servlet.*;
           3import javax.servlet.http.*;
           4
           5import org.apache.struts.action.*;
           6
           7import xxx.TurnPageForm;
           8
           9/**
          10 * <p>Title: </p>
          11 * <p>Description: </p>
          12 * <p>Copyright: Copyright (c) 2003</p>
          13 * <p>Company: </p>
          14 * @author George Hill
          15 * @version 1.0
          16 */

          17
          18public class TurnPageAction extends Action {
          19
          20  /**
          21   * 執(zhí)行用戶的跳轉(zhuǎn)頁(yè)面請(qǐng)求
          22   * @param mapping 轉(zhuǎn)發(fā)映射表
          23   * @param form 請(qǐng)求的ActionForm Bean
          24   * @param request 用戶請(qǐng)求
          25   * @param response 用戶應(yīng)答
          26   * @return 成功或者失敗的轉(zhuǎn)發(fā)
          27   * @throws IOException IO例外
          28   * @throws ServletException Servlet例外
          29   */

          30  public ActionForward execute(ActionMapping mapping, ActionForm form,
          31                               HttpServletRequest request,
          32                               HttpServletResponse response) throws IOException,
          33      ServletException {
          34    if (form instanceof TurnPageForm) {
          35      TurnPageForm tform = (TurnPageForm) form;
          36      int page = 0;
          37      String url = null;
          38
          39      if (tform.getTurn() != null{
          40        page = tform.getPage();
          41      }
           else if (tform.getFirst() != null{
          42        page = 1;
          43      }
           else if (tform.getPreview() != null{
          44        page = tform.getCurrentPage() - 1;
          45      }
           else if (tform.getNext() != null{
          46        page = tform.getCurrentPage() + 1;
          47      }
           else if (tform.getLast() != null{
          48        page = tform.getMaxPage();
          49      }

          50
          51      if (page < 1{
          52        page = 1;
          53      }
           else if (page > tform.getMaxPage()) {
          54        page = tform.getMaxPage();
          55      }

          56      if (tform.getUrl().indexOf("?"== -1{
          57        url = tform.getUrl() + "?page=" + page;
          58      }
           else {
          59        url = tform.getUrl() + "&page=" + page;
          60      }

          61      return new ActionForward(url);
          62    }

          63
          64    return mapping.findForward("error");
          65  }

          66}

          67

                struts-config.xml的相關(guān)片斷:

           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
           3<struts-config>
           4  <form-beans>
           5
           6    <form-bean name="turnPageForm" type="xxx.TurnPageForm" />
           7
           8  </form-bean>
           9  <action-mappings>
          10
          11    <action name="turnPageForm" path="/turnPage" scope="request" type="xxx.TurnPageAction" />
          12  </action-mappings>
          13</struts-config>
          posted on 2005-05-13 11:18 小米 閱讀(2274) 評(píng)論(4)  編輯  收藏 所屬分類: Struts

          評(píng)論:
          # re: 如何在Struts中實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)(1) 2007-11-27 21:44 | wwasnl
          找了多少天啦,終于看到一個(gè)完整的代碼,哥們謝啦!  回復(fù)  更多評(píng)論
            
          # re: 如何在Struts中實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)(1) 2008-05-22 15:46 | ycncepu
          寫的很好啊,早聽過小米的大名哦,
          為人還特別謙虛,贊一個(gè)  回復(fù)  更多評(píng)論
            
          # re: 如何在Struts中實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)(1) 2008-11-13 12:19 | 韓飛
          在JSP頁(yè)面中如何顯示啊  回復(fù)  更多評(píng)論
            
          # re: 如何在Struts中實(shí)現(xiàn)分頁(yè)顯示數(shù)據(jù)(1) 2014-01-17 00:26 | 李亞男
          PageData中的集合是所有都取出,還是用多少取多少,若是前者,會(huì)拖慢系統(tǒng)的。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 阳新县| 镇雄县| 克东县| 马龙县| 南漳县| 和静县| 板桥市| 铜梁县| 杭锦旗| 绿春县| 咸阳市| 扎赉特旗| 垦利县| 安岳县| 宜君县| 金溪县| 洛阳市| 河南省| 会同县| 西峡县| 洪洞县| 湟中县| 南澳县| 肇州县| 宣化县| 彭山县| 湘潭市| 鞍山市| 民县| 寿阳县| 南岸区| 沈阳市| 勃利县| 聊城市| 五指山市| 陆丰市| 滕州市| 金华市| 东乡县| 建阳市| 上杭县|