JavaWebのページネーション

1.ページネーションとは何ですか

ページN / Mの総ページ。3. 4前1 2 。5 。6 7 8 9次の最後に[]戻ります

  ページングの利点:一つだけのクエリではなく、すべてのクエリページ!

2.ページングデータ

  データページは、サーブレット経由で配信されます!

  サーブレット:

  1. *現在のページ:pageCode、PC;

    > PC:ページが現在のページ番号を渡さない場合は、サーブレットのデフォルトは、最初のページ、またはページによって転送されることがあります!

  ページの2. *総数:totalPages、TP

    > Tpの:レコードの合計数/ページあたりのレコード数

  レコードの3. *総数:totalRecored、TR

    > Trは:DAOは、テーブルからSELECT COUNT(*)を得ました。

  4. *ページあたりのレコード数:ビジネスデータやデータコールシステム!(自分で定義)

  5. *現在のページのデータ:beanList

  6. * URL

3.データ転送

  合計は、前後の層の間に渡されるデータをページング!

私たちは、例えば、改ページビーンと呼ばれるページのJavaBean、これらのデータをカプセル化:PageBean

1  パッケージcn.itcast.cstm.domain;
 2  
。3  インポートjava.util.Listに;
 4  
5。 パブリック クラス PageBean <T> {
 6。     プライベート INT PC; // このコードページページ
 7。 //     プライベートint型のTP; // 総ページ総ページ数---不要、ちょうど得る与えるために
8。     プライベート int型 TR; // レコード合計レコードの総数
9。     プライベート int型 PS; // ページサイズの記録ページあたり
10      プライベートリスト<T> beanList; // 現在ページ上の記録
11      
12     プライベート文字列のURL; // これは、URLの状態です!
13は、 
14      パブリック文字列のgetURL(){
 15          リターンURL;
 16      }
 17  
18れる     パブリック ボイドてsetURL(文字列のURL){
 19。         このた.url = URL;
 20      }
 21である 
22れる     パブリック INT GetPC(){
 23は、         リターンPC;
 24      }
 25  
26であり、     公衆 ボイド setPc(int型PC){
 27          この .PC = PC;
 28      }
29  
30      / ** 
31       *ページの合計数を計算する
 32       * @return 
33である      * / 
34である     公共 INT getTp(){
 35          // あたりのレコードの数でレコードの総数と総ページ数を計算するために
36          INT TP = TR / PS。
 37          リターン TRの== 0%PS TP :?のTP + 1 ;
 38れる     }
 39  
40  //     パブリックボイドsetTp(INT TP){
 41である //         this.tp = TP;
 42である //     } 
43は、 
44である     公共 INT getTr(){
 45          リターンTR、
 46であります     }
 47  
48      公共 ボイド setTr(INT TR){
 49          この .tr = TR。
50      }
 51  
52      公衆 INT getPs(){
 53の         リターンPS。
54      }
 55  
56      公共 ボイド setPs(int型PS){
 57は、         これが = .PS PSと、
58      }
 59  
60      公衆リスト<T> getBeanList(){
 61          リターンbeanList。
62      }
 63 
64      パブリック ボイド setBeanList(リスト<T> beanList){
 65          この .beanList = beanList。
66      }
 67 }

の層を介して前記ページング

  *ページ:ページング関連のリンクが与えられています!

    サーブレットに渡される必要があるもの>ページ:PC(現在のページ)を転送することが可能です

  *サーブレット:すべてのプロパティPageBean割り当てにPageBaenオブジェクトを作成し、ページに渡されます。

    >サーブレットは、ダオを転送する必要があります

  *サービス:DAO層のメソッドを呼び出します。(トランジット)

  *ダオ:

    > Trの(レコードの合計数):SELECT COUNT(*)表。

    > BeanList:テーブルリミットX、Y SELECT * FROM;(Yレコードをチェック最初の行xから始まるデータベースからクエリ---のMySQL方言です)

 

 ページ番号の表示リスト

1 2 3 4 5 6 7 8 9 10

  #現れどのように多くのページ!(一応10)。

  #現在のページ、6として指定された場所のリストにページ番号。

  唯一の現在のページ番号は、ページテーブルを設定するには!

  ページ起工リストは、データからだけ異なる必要があります。

    ベギン

    終わり

    10 11 12 13 14(15)16 17 18 19

  Pcが始まりと終わりを計算する必要があります

  開始= PC-5 

  終了= PC + 4

式は次のとおりです。

  ページの総数は、#<= 10(リストの長さ)、次いでページ= 1、エンド=総数を開始する場合

  #式を用いて計算:開始= PC-5、末端= PC + 4。

    オーバーフローヘッド#:それは= 1を始めるので、あなたは、<1を開始します。

    オーバーフロー#テール:エンド> $ {TP}ページの最大数、端= $ {TP}となるよう

 6.ハイパーリンクのパラメータ(検索条件)を保持するために、

   とき多基準のクエリを、次に2ページをクリックして、条件が失われますので、何の条件は、ので、すべての我々はページ上のリンクを必要としないハイパーリンクの2ページ目には予約を持っています!

   我々は内のURL PageBeanに文字列の形で条件を保存する必要があります!サーブレットにこのタスク!

それは、(現在のページPCのパラメータを除く)、ルート検索要求とパラメータであります

    / ** 
     *傍受のURL 
     * /プロジェクト名/サーブレットパス?パラメータstring 
     * @paramのリクエスト
     * @return 
     * / 
    プライベート文字列のgetURL(HttpServletRequestのリクエスト){ 
         文字列のcontextPath = request.getContextPath(); // 取得した項目名 
         文字列servletPath request.getServletPath =(); // 取得サーブレットパス 
         文字列のqueryString request.getQueryString =(); // 取得しますか?パラメータの後
         
         // 一部が含まれている場合、このパラメータは、あなたがそれを傍受する必要がPCのパラメータではなく、この部分が含まれているかどうかを決定します。
         IF(queryString.contains( "PC =&" )){は
              // 右端の出現指数のこの文字列内のサブストリングを返します
             int型インデックス= queryString.lastIndexOf( "&PC =" ); 
             queryString = queryString.substring(0 、インデックス)。
         } 
         
         戻りのcontextPath + servletPath + + "?" のqueryString。
    }

 

 パラメータ、完全なページネーションクエリを失わないように、そしてあなたは、ページ上で取得することができ、この要求がPageBeanオブジェクトへのパスで保存します。

 

注意:検索クエリの時間では、それは、SQL文ダオ層でwhere句を増やす(PageBean返すことであるオブジェクトのBeanListコレクションを取得するためのクエリです)、その後、ページングを実装します。

    リクエストメソッドがGET要求の形式、URLパスはこのようにして得られたフォームは、クエリパラメータ条件(引数クエリ条件無しPOST)、問題を符号化し、処理条件パラメータを含んでいます。検索クエリを完了します。

 

おすすめ

転載: www.cnblogs.com/xjs1874704478/p/10923289.html