Struts2 と SpringMVC の違いは何ですか?
1. フレームワークの仕組み
1. Struts2 は Filter (StrutsPrepareAndExecuteFilter) で実装され、SpringMVC (DispatcherServlet) は Servlet で実装されます。
2. フィルタはコンテナの起動後に初期化されますが、サーブレットよりも後、サービスの停止後にクラッシュします。サーブレットは、フィルターが呼び出される前に呼び出されたときに初期化され、サービスの停止後に破棄されます。
2. インターセプト メカニズム
1. Struts2
a. Struts2 フレームワークはクラスレベルのインターセプトです。各リクエストはアクションを作成します。Spring と統合する場合、Struts2 ActionBean の注入スコープはプロトタイプ モードのプロトタイプであり (それ以外の場合、スレッドの同時実行の問題が発生します)、リクエスト データはセッターとゲッターを通じてプロパティに注入されます。
b. Struts2 では、Action はリクエストとレスポンスのコンテキストに相当し、パラメータを受け取る場合は属性を通じて受け取ることができ、属性パラメータが複数のメソッドで共有されることがわかります。
#c. Struts2 の Action メソッドは URL に対応できますが、そのクラス属性はすべてのメソッドで共有されるため、アノテーションや他のメソッドを使用して独自のメソッドを識別することができなくなります2 , SpringMVCa. SpringMVC はメソッドレベルのインターセプトであり、1 つのメソッドがリクエスト コンテキストに対応するため、メソッドは基本的に独立しており、リクエスト データとレスポンス データに排他的にアクセスできます。各メソッドは同時に URL に対応しており、メソッドに固有のパラメータの受け渡しが直接メソッドに挿入されます。処理結果はModeMapを通じてフレームワークに返されます。 b. Spring 統合中、SpringMVC のコントローラー Bean はデフォルトでシングルトン モードになるため、デフォルトでは、すべてのリクエストに対してコントローラーが 1 つだけ作成されます。共有属性は存在しないため、スレッドセーフです。デフォルトのスコープを変更したい場合は、@Scope アノテーションの変更を追加する必要があります。 3. パフォーマンスSpringMVC はゼロ構成を実装しており、SpringMVC のメソッドベースのインターセプトにより、シングルトン モードの Bean インジェクションは 1 回ロードされます。 Struts2はクラスレベルのインターセプトであり、各リクエストがインスタンスの新規Actionに対応し、属性値インジェクションをすべて読み込む必要があるため、Struts2よりもSpringMVCの開発効率とパフォーマンスが高くなります。 4. インターセプト機構Struts2 には独自のインターセプト Interceptor 機構があり、SpringMVC では独自の Aop メソッドを使用しているため、Struts2 の設定ファイルの量は SpringMVC に比べて大きくなります。 5. 構成spring MVC と Spring はシームレスです。このプロジェクトの管理とセキュリティも Struts2 よりも高いです (もちろん Struts2 も異なるディレクトリ構造と関連する設定を通じて SpringMVC と同じ効果を実現できますが、xml 設定が必要な箇所が多くあります)。 SpringMVC は 100% ゼロ構成であると考えることができます。 6. 設計アイデアStruts2 は OOP プログラミングのアイデアにより沿っていますが、SpringMVC はより慎重でサーブレットを拡張しています。 7. 統合SpringMVC は Ajax を統合しており、非常に使いやすく、@ResponseBody アノテーション 1 つだけで実装でき、応答テキストを直接返し、Struts2 インターセプターと統合されています。 Ajax は、Action で処理する場合、通常、プラグインをインストールするか、独自のコードを作成して統合する必要があり、使用するのが比較的不便です。 推奨チュートリアル: 「以上がStruts2とSpringMVCの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。