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)、問題を符号化し、処理条件パラメータを含んでいます。検索クエリを完了します。