コントロール層 SpringMVC と Struts2 の違い

黄舟
リリース: 2017-03-03 10:11:10
オリジナル
1588 人が閲覧しました

一般的に使用される MVC 層とコントロール層のフレームワークには、主に Struts2 と SpringMVC が含まれており、それぞれアクションとコントローラーに対応します。では、SpringMVC と Struts の主な違いは何でしょうか?

1. フレームワークの仕組み

Struts2 は Filter を使用して実装するのに対し、SpringMVC は Servlet を使用して実装することがわかります。

Struts2 は StrutsPrepareAndExecuteFilter を使用しますが、SpringMVC は DispatcherServlet を使用します。 Filter は特別なサーブレットです。フィルタはコンテナの起動後に初期化されますが、サービスの停止後にクラッシュします。サーブレットよりも後です。サーブレットは呼び出されたときに初期化されますが、サービスの停止後にフィルターが呼び出される前にクラッシュします。


2. インターセプトメカニズム

1. Struts2

Struts2 フレームワークは、Spring と統合されると、アクションを作成します。 Bean 注入スコープはプロトタイプ モードのプロトタイプであり (それ以外の場合、スレッドの同時実行の問題が発生します)、リクエスト データはセッターとゲッターを通じてプロパティに注入されます。

Struts2では、Actionはリクエストとレスポンスのコンテキストに相当し、パラメータを受け取る際に属性パラメータを複数のメソッドで共有することができます。


2. SpringMVC

SpringMVC はメソッドレベルのインターセプトであり、1 つのメソッドがリクエストコンテキストに対応するため、メソッドは基本的に独立しており、リクエストデータとレスポンスデータに排他的にアクセスできます。各メソッドは同時に URL に対応し、メソッドに固有のパラメーターの受け渡しが直接挿入されます。処理結果はModeMapを通じてフレームワークに返されます。


Spring 統合中、SpringMVC のコントローラー Bean はデフォルトでシングルトン モードになるため、デフォルトでは、すべてのリクエストに対してコントローラーが 1 つだけ作成されます。そのため、変更する場合はスレッドセーフになります。デフォルトのスコープは @Scope アノテーションを追加して変更する必要があります。


3. パフォーマンス

SpringMVC はゼロコンフィギュレーションを実装しています。 SpringMVC のメソッドベースのインターセプトにより、シングルトン モードの Bean インジェクションは 1 回ロードされます。 Struts2 はクラスレベルのインターセプトであり、インスタンスに対応する新しいアクションの各リクエストにはすべての属性値の注入が必要であるため、SpringMVC は Struts2 よりも高速です。


4番目、インターセプトメカニズム

Struts2には独自のインターセプトInterceptorメカニズムがあり、SpringMVCは独立したAopメソッドを使用します。

上記は、コントロール層 SpringMVC と Struts2 の違いです。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート