2011-11-10 13 views
3

基本的にはい、またはいいえの質問ですが、実装のベストプラクティスに関するアドバイスも探しています。サーブレットを使用してAJAXリクエストを処理しますか?

いつか私が間違ってしまうことを知らせてください。 AJAXは/ *そう/ AJAX/getDataFromServerなどのすべての要求URLが

  • マイdoGetメソッドによって処理されます/ AJAXへ
  • AjaxServletマップを要求したすべてを処理する

    • 私は特定のサーブレット(AjaxServlet?)を持っていますオーバライド機能はとてもdoGetメソッド内のブロックは、特定のURLコール(/ AJAX/getDataFromServer)

    を処理する場合、私はJSONを返すようにしたい各たび

  • )(request.getPathInfoをチェックし、長い場合は/ ELSEIF鎖であり、遠い私はhavこれらの文字列を自分で構築しています。私が使用できる軽量なJSONパッケージがありますか?私は例えばArrayList(ArrayListJson?)を拡張してtoJson()メソッドを追加し、次にArrayListJsonに任意のArrayListをキャストできますが、これはすでに完了していると確信しています。

  • 答えて

    4

    あなたの基本的な考え方はOKに聞こえるが、それは、それぞれが自分のタスクを扱う複数のクラスを持つことが最善でしょう。私が正常に使用したメソッドは、単一のサーブレットを使用してコールを傍受し、実際に実装を実行する他のクラスにタスクを渡すことです。たとえば、メソッドpublic String performTask(HttpServletRequest request)を持つインタフェース(名前はAJAXHandler)を作成し、サーブレットのファクトリ・パターンを使用して適切なクラス(AJAXHandlerを実装する)をインスタンス化し、そのクラスをその作業をさせることができます。 performTaskメソッドの結果(JSON文字列)が送出されます。新しいAJAX呼び出しを実装する必要がある場合は、AJAXHandlerを実装する新しいクラスを追加し、Factoryを新しいクラス情報で更新します。 JSONの扱いについて

    、私はhttp://code.google.com/p/json-simple/

    でFactoryパターンがhttp://www.oodesign.com/factory-pattern.html

    幸運で記述されている、あなたはJSON-シンプルを見てみましょうお勧め!

    +0

    AJAXを扱うためのサーブレットを作成するのは間違いありませんか?私は、各タスクのオブジェクトを作成するというアイデアが気に入っています。これは、ifブロックからコードを除外し、リクエストされた場合にのみインスタンス化されるクラスに配置することによってリソースを節約するためです。 if/elsifブロック内のすべてを行うのではなく、これを大きなパフォーマンス向上と見なしますか? – Matthew

    +2

    @ user1038812「コマンドパターン」と呼ばれています。パフォーマンスのためには行われません。 if/elseまたはswitch文よりもあまり速くはありません。しかし、速度の違いは重要ではありませんが、保守性と可読性の違いはあります。 –

    +0

    Daveのコメントで100%同意する。パフォーマンスの向上は全く見られません。実際、それは少し遅くなりますが、無視しても十分ではありません。コードの読み込みと管理がずっと簡単になり、進歩するにつれてバグが導入される可能性は低くなります。 – Mike

    0

    大きなIFブロックを置き換える軽量ソリューションを探している場合は、リフレクションを使用して、要求パラメータに基づいてオブジェクトのメソッドを呼び出すことができます。 Java用のJSON用として
    http://json.org/java/

    +0

    大きなif/elseifチェーンの代わりにオブジェクトを使用する利点がありますか。私はこのチェーンアプローチを使用しても構いません。コードを少しきれいにするだけですか? – Matthew

    0

    私はサーブレットの長いif/elseチェーンの代わりにRESTのために行くと言っています。これは、使用されるサービスをより細かく制御できるようにします。

    関連する問題