今日は劉暁愛がジャワ島を独学して107日目。
ご視聴ありがとうございました。
それでは、今日の勉強を始めましょう:
I. ページングの概要
現在、ウェブ上でデータを検索する場合、キーワード検索で一度に多くのデータを得ることができます。
例えば、ブラウザで "Liu Xiao-ai "と検索すると、12万件がヒットします。
一度にすべてを表示するのはあまりにも難しく、そのためにブラウザがデータをレンダリングし続ける必要があり、ブラウザにも大きな負担がかかります。
この問題を解決するために、ページングが導入されました:
現在、サイトは一般的にクエリ関数に関与している、3つの重要なパラメータを含むページングについて、ページングに使用されます:
- 現在のページのページ番号 pageNum.
- 1ページに表示されるデータ項目の数 pageSize.
- データの各ページの開始インデックス startCount。
フロントエンドは、現在のページコード番号とページあたりのデータバーの数としてデータを取得することができます。
また、データベースへのアクセスには、データの開始インデックスと1ページあたりのデータ項目数が必要です。
だから、そのパターンを見つけてください:
データベースにはいくつもの関連データがあり、1ページに8つのデータが表示されると仮定すると
- ページ1:インデックス・ビット0から始まる8小節のデータ。
- 2ページ目:インデックス・ビット8から始まる8小節のデータ。
- 3ページ目:インデックス・ビット16から始まる8小節のデータ。
このことから、次のようなパターンが考えられます:
ページあたりの初期インデックス・ビット = * ページ上のデータ量、したがって、キーワード limt を使用して、記述する SQL 文を決定します。
アイデアが分析されたら、コードを書き始めることができます。
フロントエンドがリクエストを送信
そのうちの一つは、データを死ぬまで書き込む静的ページについてです。こちら側のメインは、ページングの機能の実装を一時的に考えるだけです。
表示されている各ページ番号にクリック・イベントをバインドし、対応する関数を getPageData() とします。
getPageData(pageNum,pageSize)に2つのパラメータを指定します:
- pageNum 現在のページのページ番号。
- pageSize 現在のページのデータ項目数。
イベントが正常にバインドされると、対応するページ番号がクリックされるとすぐにリクエストがサーバーに送信されます:
- リクエストはバックエンドのRouteServletに対応します。
- リクエストはpageQueryメソッドで処理されます。
- リクエストのパラメータデータは、キーと値のペア pageNum と pageSize です。
II. バックエンドコードの記述
1ウェブレイヤー
リクエストを受け付けるRouteServletを作成し、pageQueryメソッドに特定のコードを記述します:
ウェブレイヤーのコードとは、リクエストデータの取得、サービスレイヤーの呼び出し、レスポンスデータの取得という3つのステップのことです。
リクエストには2つのキーと値のペアのデータがあり、対応する値はgetParameter()メソッドで別々に取得されます。
そして、サービス・レイヤーのメソッドを呼び出すパラメーターとして使用され、特定の処理が行われます。
加工データの最終回答。
2サービス層
ページングデータの3つの主要パラメータ
- 現在のページ番号 pageNum.
- 現在のページのデータ項目数。
- 現在のページデータの開始インデックス startCount.
デフォルト値は1,8,0です。つまり、1ページ目のデータはインデックス・ビット0から照会された8つのデータです。
冒頭で、彼らは互いに次のような関係にあるとも分析されました:
startCount=*ページサイズ
しかし、フロントエンドはリクエストパラメータを持っているので、リクエストパラメータを動的に追いかけます。
文字列データを int 型に変換
リクエストのデータは文字列なので、intに変換する必要があり、変換する前にnullでない判定をする必要があります。
apache が提供するツールクラス StringUtils の isNotBlank() メソッドを使用して、文字列の非 NULL 判定を行います:
ツール・クラスは、文字列の中に何もない、NULL、文字列の中に空白のみ、という3種類のデータを判定することができます。
だから、よりパワフルで実用的。
カプセル化されたデータ
daoレイヤーからデータをクエリすると、ルートオブジェクトのコレクションが返されます。
最後にjsonデータに変換され、ウェブレイヤーに返されます。
3層
サービスから渡されたパラメータpageSizeとstartCountを使用してデータベースからデータを照会します。
リクエストはpageNumとpageSizeパラメータに対するものでした。
サービス層の主な役割は、それらをデータベースクエリのパラメータに変換することです。
つまり、startCountインデックス・ビット・データから始まるpageSizeデータを照会しています。
第三に、フロントエンドのレンダリングページ
フロントエンドはバックエンドのレスポンスからデータを受け取った後、データを処理して対応するページタグにレンダリングする必要があります:
レスポンスデータはコレクションであるため、jQueryのforEachメソッドを使用してデータをトラバースする必要があります。
また、トラバーサルごとに対応する要素の値を取得し、その値を静的ページにスプライスします。
最後に、つなぎ合わせられたデータは、idセレクタを使ってページ上の対応するタグにレンダリングされます。
結論として
個人的なエネルギーと時間の制約のため、ページングクエリの機能は完全な実装ではありませんが、基本的にはそのような考えです。
多くの場合、学習とは特定のポイントについて学ぶことではないと思います:
どのように学ぶかを学ぶこと、そしてどんな問題にも立ち向かい、解決する方法を見つけ出す勇気を持つこと。
ご視聴ありがとうございました。