2010-12-30 6 views
4

MVCパターンを使用して、アプリケーションの素人の骨を書きました。私は現在、アプリケーションにAJAXの機能を持っていませんが、これを達成するためにアプリケーションのアーキテクチャをどのように変更するかについての提案を探していましたので、私の現在のアーキテクチャを説明するために最善を尽くします:AJAX MVCアプリケーションのアーキテクチャ

  • は、私はアクションが
  • は、私が呼ばれているビジネス・ロジックを処理し、異なるエンタープライズJavaビーンズ(EJB 3.1)の数を持っている必要かを決定するためにrequest.getServletPath()つまりサーブレットパスを読み込むコントローラサーブレット「controller.java」を持っていますリクエストされたアクションに応じてコントローラのサーブレットによって返される
  • 私は、自分のアプリケーションのさまざまな側面に関連する多くのビューを持っていますstは要求されたアクションに基づいて(コントローラサーブレットによって)転送される。 request.getRequestDispatcher(url).forward(request, response);

私は現在のアーキテクチャは、()私の「controller.java」サーブレットからパターンを照合することによってAJAX機能をサポートできることを理解するが、私は私がでサポートされているアクションの膨大な数を持っているポイントに取得しています私のコントローラとそれは乱雑になってきています。

誰か提案はありますか? これを行うための標準的なパターンはありますか?私は相対的に初心者なので、今はどんなフレームワークからも自由にしようとしています!あなたがリファクタリングを必要な場所それはだ - あなたのコントローラはアクションの膨大な数をサポートしている場合

おかげ

答えて

3

:-)。あなたのアーキテクチャは、コントローラごとにアクションの数が合理的であれば(正しいと言えば)、正しく見えます。

リファクタリングの可能な方法の1つは、コントローラをモジュールにグループ化することです。

boolean ajax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); 

をし、それに応じて応答の種類を扱う:

+0

あなたの返事ありがとうございます...私はこれが私がする必要があることに同意します。これが特定のフレームワークに特有のものであるかどうか(Spring MVCに特有のいくつかの結果を返す簡単なgoogle)、あるいは異なるURLパターンに応答する別々のサーブレットを実装することでこれを実装できるかどうかを教えてください。 – JLove

+0

私はあなたがどのフレームワークから離れていてくれることをお勧めします。主にあなたが技術を学んでいるからです(あなたが質問で言及したように)。そして、はい、そうです。URLパターン/接頭辞別のモジュールを別々のJavaパッケージにマップします。私は "マスターサーブレット"を作成し、それをディスパッチャーと呼びます。 – yegor256

0

次のようにAJAXリクエストを確認することができます。私。転送またはリダイレクトで使用されるビューIDを返すか、応答ボディに書き込まれるJSONを返すか、この種の情報を含む特別なViewオブジェクトを返します。 this basic MVC exampleが与えられているので、それをajaxサポートで拡張するのは難しくありません。

0

BalusCと同じ考えです。

私たちは、それ自身で動作するMVCアプリケーションを持っています。 AJAX機能を追加するために、JQueryを追加し、プレゼンテーション層にjqGridを使用しました。それはAJAX経由でバックエンドと通信します。 JQueryとjqGridを削除しても、まだ完全に稼働しているMVCアプリケーションがあります。

私はhttp://krams915.blogspot.com/2010/12/jqgrid-and-spring-3-mvc-integrationにそのデモを載せました。ここでSpring MVC 3とjqGrid/JQueryを統合しました

関連する問題