JSP タグ ライブラリをダンプし、JSON に切り替えます。
開発チームが JSP タグ ライブラリを使用すべきではないときに使用しているのをよく見かけます。この投稿は、なぜ JSP タグ ライブラリを過去の遺物と見なすのが最善なのかを説明するために書きました。
ほとんどの重要な Web アプリケーションは、サーバー側のデータベースにデータを保存します。これらのアプリケーションには、クライアント (Web ブラウザ) とサーバー (Java アプリケーション サーバーなど) がデータを交換できるメカニズムが必要です。通常、a) データをユーザーに表示する必要がある (つまり、クライアントがルックアップ基準をサーバーに送信し、サーバーが関連データで応答する) または b) ユーザーがブラウザーでデータを変更し、クライアントがデータの変更をサーバーに送信して、処理および/または永続的な保存を行います。
最近まで、ほとんどの Java Web アプリケーションは、クライアント (Web ブラウザー) とサーバーの間で提供される JSP/サーブレット パラダイムの一部としてやり取りされる Java オブジェクト (JavaBeans) からデータを抽出するクライアント側メカニズムとして JSP タグ ライブラリを使用していました。ジャバ。(注: JSP は、サーバー側の Java オブジェクトを操作するための Java コードを含めることができるように、Java サーブレットに変換される HTML ファイルです。) いずれの場合も、サーバーは新しいページ (埋め込みデータを含む) で応答します。全ページ更新。
1995 年に AJAX が登場し、上記のフル ページ リフレッシュ パラダイムが変更されました。AJAX を使用すると、ページ全体を更新しなくても、ブラウザとアプリ サーバー間で部分的なページ更新とデータ交換を行うことができます。それ以来、AJAX は、v3.0/2010 で Spring (Java 用) などの一般的なフレームワークに組み込まれたサポートにより、継続的に勢いを増しています。 v1.5/2011 の jQuery (JavaScript 用)。
AJAX で最適に機能するデータ交換形式は JSON です。これは、ページ全体を更新しない限り JSP タグ ライブラリを呼び出すことができないためです。サーバー側の Java モデル オブジェクト (JavaBeans) と JSON の間のマッピングにはいくつかのオプションがあり、ブラウザーで実行されている JavaScript で簡単に使用できます。(注: JSON は JavaScript オブジェクトのリテラル表現であるため、JSON から JavaScript オブジェクトへの変換は簡単です。) 私が推奨し、使用しているオプションは、コントローラー メソッド定義の一部としての Spring MVC の @RequestBody および @ResponseBody アノテーションです ( Jackson ライブラリを利用する) を使用して、JavaBeans を JSON に自動的にマップしたり、その逆にマップしたりします (図 3 と 4 を参照)。(別の方法は、Direct Web Remoting や DWR などの独自のフレームワークを使用することですが、これは明らかな理由からお勧めしません。)
その結果、私が相談するほとんどのチームに、純粋な AJAX/JSON ベースのアプローチを優先して、JSP タグ ライブラリを完全に放棄するのが最善であると勧めています。
AJAX/JSON のみを (ページ全体の更新でも) 使用することを推奨する理由の概要を次に示します。
非常に単純なアプリケーションを使用している場合を除き、(ページ上の一部のデータを変更する必要があるたびにページ全体を更新するのではなく) AJAX を使用してページの部分更新をサポートする必要がある可能性があります。そのためには、ブラウザ/クライアントとアプリケーション サーバーの間でデータを交換するために、Java オブジェクト (JavaBeans) と JavaScript オブジェクト (JSON) の間でマッピングする必要があります。したがって、データ交換用に 2 つのチャネル (ページ全体の更新用の JSP タグ ライブラリとページの部分的な更新用の AJAX/JSON) をサポートすることはあまり意味がありません。また、1 つを選択する必要がある場合は、AJAX/JSON でなければなりません。JSP タグ ライブラリは部分的なページの更新では機能しないためです。したがって、最初に AJAX/JSON を使用し、JSP タグ ライブラリを放棄することをお勧めします。しかし、さらにインセンティブが必要な場合は、読み進めてください。
私は、ネットワークを行き来するデータのサイズを分析したチームと協力して、JSON が消費するネットワーク帯域幅が、JavaBeans/JSP タグ ライブラリ アプローチや XML ペイロードよりもはるかに少ないことを発見しました。JSON は、XML に関連する構文上のオーバーヘッドや JavaBeans に関連する豊富なオブジェクトのオーバーヘッドのない必要最小限の純粋なテキスト形式であるため、彼らの分析は私には理にかなっているように思えます。
JSP タグ ライブラリを使用して JavaBeans を操作するために必要なアクロバット (図 1 を参照) と比較して、JavaBeans から JSON へのマッピングは Spring MVC と完全にシームレスであり、コーディングはまったく必要ありません (図 2 を参照)。JSP タグ ライブラリを使用しているかどうかに関係なく、jQuery ウィジェットがデータを使用できるようにするために、JavaScript オブジェクトにデータを入力する必要がある場合があります。つまり、JSP タグ ライブラリを使用するかどうかに関係なく、JavaScript オブジェクトが必要です。JSP タグ ライブラリを放棄すると、ステップ 2 (図を参照) をスキップして、JSP タグ ライブラリを使用した JavaBean オブジェクトの操作を混乱させることなく、JSON および対応する JavaScript オブジェクトに直接進むことができます。