0

私は、MYSQLデータベースに対して多くのクエリを実行する必要があるWebを使用しています。開発環境としてJava+Tomcatを使用しています。

私はこれを解決するためにさまざまな方法を試しました:

  • 最初は、sqlタグを付けてjstlを使い始めました。この方法で作成されたすべてのjspドキュメントは、jstl sqlタグを使用した多くのSQLクエリで「ダーティ」に見え、DBが変更されたときにすべてのドキュメントを変更する必要があります。

  • 私が試した2番目の解決策は、サーブレットでリストとマップを使用してjstlelからデータにアクセスすることでした。見た目は問題ありませんが、カスタムURLを使用して各ドキュメントにアクセスする必要があるのは少し奇妙に思えます(最初に、リクエスト属性を設定してjspドキュメントRequestDispatcherを呼び出すまで、いくつかのクラスでデータを操作します)。ユーザーがナビゲーションシーケンスでここからそこにジャンプした場合、失敗します(一部のメニューまたはテーブルを埋めるために必要なクエリがありません)。

  • 私が今試している最後の解決策は、サーバー側との間でJSONデータを送受信することです。私はそれが好きです(すべてが同じurlコンテキストで発生し、htmlドキュメント部分はクリーンでより動的なWebです...)が、JSONデータはクライアント側でjavascriptで処理する必要があり、大きなデータチャンクのパフォーマンスに影響を与える可能性があります。文字列形式が原因で、サイズに制限がある場合があります。たとえば、JSONは、DataTables jsライブラリを使用したデータ分割で正常に機能します。DBから同時に200行の最大値(このパラメーターを設定)のみを取得します。ただし、このデータ分割を実行せずにWebの速度が低下し、たとえば、複数のコンボボックスや、MYSQLDBのテーブル内にすべての行があるテーブルが表示されます。

数年前、私はナビゲーション用のフラッシュとDBとAPP間のデータ交換用のxmlを組み込んだデスクトップアプリ(C#)を開発しました。ただし、さまざまなアプリ間でのデータのエクスポートにはXMLの方が適していると思います。すでにDBを持っている場合は、部分的なデータを含むファイルを増やす必要はありません。

それで、みんな、あなたは何が最善の解決策だと思いますか?いろいろな視点で見ていきたいと思います。

4

1 に答える 1

3

図1 図 2 図 3 図 4

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 のみを (ページ全体の更新でも) 使用することを推奨する理由の概要を次に示します。

  1. 非常に単純なアプリケーションを使用している場合を除き、(ページ上の一部のデータを変更する必要があるたびにページ全体を更新するのではなく) AJAX を使用してページの部分更新をサポートする必要がある可能性があります。そのためには、ブラウザ/クライアントとアプリケーション サーバーの間でデータを交換するために、Java オブジェクト (JavaBeans) と JavaScript オブジェクト (JSON) の間でマッピングする必要があります。したがって、データ交換用に 2 つのチャネル (ページ全体の更新用の JSP タグ ライブラリとページの部分的な更新用の AJAX/JSON) をサポートすることはあまり意味がありません。また、1 つを選択する必要がある場合は、AJAX/JSON でなければなりません。JSP タグ ライブラリは部分的なページの更新では機能しないためです。したがって、最初に AJAX/JSON を使用し、JSP タグ ライブラリを放棄することをお勧めします。しかし、さらにインセンティブが必要な場合は、読み進めてください。

  2. 私は、ネットワークを行き来するデータのサイズを分析したチームと協力して、JSON が消費するネットワーク帯域幅が、JavaBeans/JSP タグ ライブラリ アプローチや XML ペイロードよりもはるかに少ないことを発見しました。JSON は、XML に関連する構文上のオーバーヘッドや JavaBeans に関連する豊富なオブジェクトのオーバーヘッドのない必要最小限の純粋なテキスト形式であるため、彼らの分析は私には理にかなっているように思えます。

  3. JSP タグ ライブラリを使用して JavaBeans を操作するために必要なアクロバット (図 1 を参照) と比較して、JavaBeans から JSON へのマッピングは Spring MVC と完全にシームレスであり、コーディングはまったく必要ありません (図 2 を参照)。JSP タグ ライブラリを使用しているかどうかに関係なく、jQuery ウィジェットがデータを使用できるようにするために、JavaScript オブジェクトにデータを入力する必要がある場合があります。つまり、JSP タグ ライブラリを使用するかどうかに関係なく、JavaScript オブジェクトが必要です。JSP タグ ライブラリを放棄すると、ステップ 2 (図を参照) をスキップして、JSP タグ ライブラリを使用した JavaBean オブジェクトの操作を混乱させることなく、JSON および対応する JavaScript オブジェクトに直接進むことができます。

于 2013-05-23T22:28:23.000 に答える