一般的に使用される MVC 層とコントロール層のフレームワークには、主に Struts2 と SpringMVC が含まれており、それぞれアクションとコントローラーに対応します。では、SpringMVC と Struts の主な違いは何でしょうか?
1. フレームワークの仕組み
Struts2 は Filter を使用して実装するのに対し、SpringMVC は Servlet を使用して実装することがわかります。
Struts2 は StrutsPrepareAndExecuteFilter を使用しますが、SpringMVC は DispatcherServlet を使用します。 Filter は特別なサーブレットです。フィルタはコンテナの起動後に初期化されますが、サービスの停止後にクラッシュします。サーブレットよりも後です。サーブレットは呼び出されたときに初期化されますが、サービスの停止後にフィルターが呼び出される前にクラッシュします。
2. インターセプトメカニズム
1. Struts2
Struts2 フレームワークは、Spring と統合されると、アクションを作成します。 Bean 注入スコープはプロトタイプ モードのプロトタイプであり (それ以外の場合、スレッドの同時実行の問題が発生します)、リクエスト データはセッターとゲッターを通じてプロパティに注入されます。
Struts2では、Actionはリクエストとレスポンスのコンテキストに相当し、パラメータを受け取る際に属性パラメータを複数のメソッドで共有することができます。
SpringMVC はメソッドレベルのインターセプトであり、1 つのメソッドがリクエストコンテキストに対応するため、メソッドは基本的に独立しており、リクエストデータとレスポンスデータに排他的にアクセスできます。各メソッドは同時に URL に対応し、メソッドに固有のパラメーターの受け渡しが直接挿入されます。処理結果はModeMapを通じてフレームワークに返されます。
SpringMVC はゼロコンフィギュレーションを実装しています。 SpringMVC のメソッドベースのインターセプトにより、シングルトン モードの Bean インジェクションは 1 回ロードされます。 Struts2 はクラスレベルのインターセプトであり、インスタンスに対応する新しいアクションの各リクエストにはすべての属性値の注入が必要であるため、SpringMVC は Struts2 よりも高速です。 4番目、インターセプトメカニズム Struts2には独自のインターセプトInterceptorメカニズムがあり、SpringMVCは独立したAopメソッドを使用します。
上記は、コントロール層 SpringMVC と Struts2 の違いです。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。