SpringMVCはSpringwebmvcとも呼ばれます。これはSpringフレームワークの一部であり、Spring3.0以降にリリースされました。
コンテンツ
SpringMVCの利点
1.MVCアーキテクチャに基づく
- MVCアーキテクチャに基づいて、機能的な分業は明確で分離されています。
2.理解しやすく、使いやすく、使いやすい
- 注釈付きのSpringMVCプロジェクトを開発できます。SpringMVCも軽量で、jarファイルは小さいです。特定のインターフェイスやクラスに依存しません。
3. Springフレームワークの一部として、SpringのIoCとAopを使用できます
- Strtus、MyBatis、Hiberate、JPAなどの他のフレームワークを統合すると便利です。
4. SpringMVCはアノテーションの使用を強化し、アノテーションはコントローラー、サービス、および便利で柔軟なDaoで使用できます。
- @Controllerを使用してプロセッサオブジェクトを作成し、@ Serviceを使用してビジネスオブジェクトを作成し、@Autowiredまたは@Resourceを使用してServiceをコントローラクラスに挿入し、Daoを使用してServiceクラスに挿入します。
最初の注釈付きSpringMVCプログラム
いわゆるSpringMVCアノテーション開発とは、コード内のクラスとメソッドにアノテーションを付けることで、springmvcコンテナーへのプロセッサーの登録を完了できることを意味します。注釈付きの開発が焦点です。
プロジェクト:プライマリアノテーション
完了機能:ユーザーがリクエストを送信します。リクエストを受信すると、サーバー側のプロセッサがウェルカムメッセージを送信し、応答ページにメッセージを表示します。
1.新しいMavenWebプロジェクトを作成します
2、pom.xml
Webプロジェクトを作成した後、サーブレットの依存関係、SpringMVCの依存関係を追加します
頼る:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
プラグイン:
<build>
<plugins>
<!-- 编码和编译和JDK版本 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
3.中央スケジューラーを登録します
(1)フルクラス名
中央ディスパッチャは、DispatcherServletという名前のサーブレットです。中央スケジューラの完全修飾クラス名は、インポートされたJarファイルspring-webmvc-5.2.5.RELEASE.jarの最初のパッケージorg.springframework.web.servletにあります。
(2)<load-on-startup />
<servlet/>に<load-on-startup/>を追加する機能は、Webサーバー(ここではTomcat)の起動時にサーブレットインスタンスが作成されるかどうか、つまりサーブレットを実行するinitを呼び出すかどうかをマークすることです。 Webサーバーの起動時。()実際にアクセスしたときに作成するのではなく、メソッド。
その値は整数でなければなりません。
- 値が0以上の場合は、コンテナが起動時にサーブレットをロードして初期化することを意味します。値が小さいほど、サーブレットの優先度が高くなり、サーブレットが早く作成されます。
- 値が0未満または指定されていない場合は、サーブレットが実際に使用された場合にのみ作成されることを意味します。
- 値が同じである場合、コンテナはそれ自体で作成順序を選択します。
(3)<url-pattern />
<url-pattern />の場合は、/と書くことができ、*。doと書くことをお勧めします。
(4)構成ファイルの場所と名前
登録が完了すると、サーバー上で直接公開して実行できます。この時点で、ブラウザページにアクセスすると、コンソールはFileNotFoundException例外をスローします。つまり、デフォルトでは、サーブレット名-servlet.xmlという名前の構成ファイルは、プロジェクトルートの下のWEB-INFディレクトリから見つける必要があります。ここでの「サーブレット名」とは、登録中央ディスパッチャの<servlet-name/>タグで指定されたサーブレットの名前値を指します。この例の構成ファイルの名前はspringmvc-servlet.xmlです。
一般に、構成ファイルはクラスパス、つまりリソースディレクトリに配置されます。したがって、中央スケジューラを登録するときは、中央スケジューラのSpringMVC構成ファイルの検索パスとファイル名も設定する必要があります。
FrameworkServletから継承するDispatcherServletのソースコードを開きます。このクラスには、SpringMVC構成ファイルのパスとファイル名を設定するために使用される属性contextConfigLocationがあります。初期化パラメータのプロパティはここから取得されます。
SpringMVC構成ファイルを作成します
プロジェクトのクラスパス、つまりsrcディレクトリにSpringMVC構成ファイルspringmvc.xmlを作成します。ファイル名は任意の名前にすることができます。
1.プロセッサを作成します
対応するアノテーションをクラスとメソッドに追加できます。
@Controller:現在のクラスがプロセッサであることを示します。
@RequestMapping:現在のメソッドがハンドラーメソッドであることを示します。このメソッドは、value属性で指定されたURIを処理して応答する必要があります。注釈付きメソッドのメソッド名は任意にすることができます。
複数のリクエストパスがハンドラーメソッドの実行と一致する可能性がある場合は、@RequestMappingのvalue属性に配列を書き込むことができます。
ModelAndViewクラスのaddObject()メソッドは、そのモデルにデータを追加するために使用されます。モデルの最下層はHashMapです。
モデル内のデータはリクエストスコープに保存されます。デフォルトでは、SringMVCは転送を使用してビューにジャンプします。リクエストが終了すると、モデル内のデータは破棄されます。
2.宣言型コンポーネントスキャナー
コンポーネントスキャナーをspringmvc.xmlに登録します
3.ターゲットページを定義します
webappディレクトリの下に新しいサブディレクトリjspを作成し、その中に新しいjspページshow.jspを作成します。
4.ビューリゾルバーの登録を変更します
リクエストリソースパスと拡張機能の冗長性を回避するために、SpringMVCフレームワークはビューリゾルバーInternalResouceViewResolverにリクエストプレフィックスとサフィックスを導入します。ModelAndViewでは、ジャンプするページのファイル名を指定するだけで済みます。特定のファイルパスとファイル拡張子については、ビューパーサーが自動的にスプライシングを完了します。
show.jspファイルを/WEB-INF/jsp/パスに配置します。
5.プロセッサを変更します
6.SpringMVCフレームワークのWebリクエスト処理順序を使用します
SpringMVCのMVCコンポーネント
SpringMVC実行プロセス(理解)
実行プロセスの簡単な分析
- ブラウザは、中央のディスパッチャに要求を送信します。
- 中央スケジューラーは、要求をプロセッサー・マッパーに直接転送します。
- 要求に応じて、プロセッサマッパーは要求を処理するプロセッサを見つけ、それをプロセッサ実行チェーンとしてカプセル化し、中央スケジューラに返します。
- 中央スケジューラーは、プロセッサー実行チェーン内のプロセッサーに従ってプロセッサーを実行できるプロセッサー・アダプターを見つけます。
- ハンドラー・アダプターは、実行ハンドラーを呼び出します。
- プロセッサは、処理結果とジャンプされるビューをオブジェクトModelAndViewにカプセル化し、それをプロセッサアダプタに返します。
- プロセッサアダプタは、結果を中央スケジューラに直接返します。
- 中央ディスパッチャーは、ビューリゾルバーを呼び出して、ModelAndViewのビュー名をビューオブジェクトとしてカプセル化します。
- ビューリゾルバーは、カプセル化されたビューオブジェクトを中央ディスパッチャーに返します。
- 中央スケジューラは、ビューオブジェクトを呼び出してそれ自体をレンダリングします。つまり、データを入力して応答オブジェクトを形成します。
- 中央スケジューラーはブラウザーに応答します。