English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring MVCはJavaフレームワークであり、Webアプリケーションの構築に使用されます。それはModel-View-Controllerデザインパターンを使用します。それはコントロールの逆転や依存注入などのすべての基本的なSpringフレームワーク機能を実現します。
Spring MVCは DispatcherServlet Springフレームワーク内でMVCを使用するための洗練された解決策を提供します。ここでは、 DispatcherServlet クラスであり、受入リクエストを受け入れ、それを正しいリソース(例えばコントローラー、モデル、ビュー)にマッピングするために使用されます。
Model-モデルにはアプリケーションのデータが含まれています。データは単一のオブジェクトまたはオブジェクトのコレクションです。 Controller-コントローラーにはアプリケーションのビジネスロジックが含まれています。ここでは、@Controllerアノテーションがクラスをコントローラーとしてマークするために使用されます。 View-ビューは提供された情報を特定の形式で表現します。通常、JSP + JSTLはビューページの作成に使用されます。springは、例えばApache Velocity、Thymeleaf、FreeMarkerなどの他のビューテクノロジーもサポートしています。 Front Controller-Spring Web MVCでは、DispatcherServletクラスがフロントコントローラーとして使用されます。それはSpring MVCアプリケーションの流れを管理する責任があります。
図に示されるように、すべての入力リクエストはフロントコントローラーのDispatcherServletによってインターセプトされます。 DispatcherServletはXMLファイルから処理プログラムのマッピングエントリを取得し、リクエストをコントローラーに転送します。 コントローラーはModelAndViewオブジェクトを返します。 DispatcherServletは、XMLファイル内のビューレゾルバーエントリをチェックし、指定されたビューコンポーネントを呼び出します。
Spring MVC Frameworkのいくつかの利点を見てみましょう: -
役割の分離-Spring MVCは、モデルオブジェクト、コントローラー、コマンドオブジェクト、ビューレゾルバー、DispatcherServlet、バリデーターなど、各役割を分離し、それぞれの役割を専門のオブジェクトで実現できます。 軽量-軽量なservletコンテナを使用して、アプリケーションの開発とデプロイを行います。 強力な設定-フレームワークとアプリケーションクラスに信頼性の高い設定を提供し、Webコントローラーからビジネスオブジェクトやバリデーターへの横断的な参照を簡単に実現します。 迅速な開発-Spring MVCは、迅速な並行開発を促進します。 再利用可能なビジネスコード-新しいオブジェクトを作成する必要がなく、既存のビジネスオブジェクトを使用できます。 テストが簡単-Springでは、通常JavaBeansクラスを作成し、setterメソッドを使用してテストデータを注入できます。 柔軟なマッピング-ページを簡単にリダイレクトする特定のアノテーションを提供します。
Spring Web MVCフレームワークの簡単な例を見てみましょう。以下の手順です:
Mavenでspring jarファイルをロードするか、依存関係を追加します コントローラークラスを作成します web.xmlファイルでコントローラーのエントリを提供します 別のXMLファイルでbeanを定義します JSPページでメッセージを表示します サーバーを起動し、プロジェクトをデプロイします
このサンプルを実行するには、以下をロードする必要があります:
Spring Core jarファイル Spring Web jarファイル JSP + JSTL jarファイル(他のビューテクノロジを使用する場合、対応するjarファイルをロードします)。
Springのすべてのjarファイルをダウンロードします。JSPとJSTLも含まれます。
Mavenを使用している場合、jarファイルを追加する必要はありません。今度は、pom.xmlファイルにMaven依存関係を追加する必要があります。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/40.0.0 http://maven.apache.org/maven-maven.apache.org4maven v4_0_0.xsd">/<modelVersion> .0.0<3modelVersion>/<dependency> <groupId>com.w/artifactId> codebox/<artifactId>SpringMVC< <packaging>war<1-packaging>/version> <version>0.0./name> SNAPSHOT<//<name>SpringMVC Maven Webapp</<url>http: maven.apache.org< javax.servlet url>/<dependency> <dependencies>/artifactId> <version>3<artifactId>spring8<artifactId>spring1</version> <groupId>junit</<artifactId>junit< </dependency> <!-- .//.RELEASE</https:/<scope>test</spring-scope> --> javax.servlet org.springframework/<dependency> webmvc-<groupId>org.springframework</artifactId> <version>5<artifactId>spring1<artifactId>spring1webmvc</version> </dependency> <!-- .//.RELEASE</https:/mvnrepository.com/mvnrepository.com-artifact --> javax.servlet api/<dependency> <groupId>javax.servlet<-<artifactId>servlet/artifactId> <version>3.0-alpha-1</version> </dependency> </dependencies> <build> <finalName>SpringMVC</finalName> </build> </project>
コントローラークラスを作成するには、@Controllerと@RequestMappingの2つの注釈を使用します。
@Controller注釈でこのクラスをControllerとしてマークする。
@Requestmapping批注用いて指定されたURL名を持つクラスをマッピングする。
HelloController.java
package com.w3codebox; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/))) public String display() { return "index"; } }
このxmlファイルでは、ServletクラスDispatcherServletをSpring Web MVCのフロントコントローラーとして指定します。すべてのhtmlファイルのリクエストはDispatcherServletに転送されます。
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SpringMVC</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
これは重要な設定ファイルであり、Viewコンポーネントを指定する必要があります。
context: component-scan要素はDispatcherServletの基本パッケージを定義しています。コントローラークラスを検索します。
このxmlファイルはWEB-INFディレクトリ内。
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- コンポーネントスキャニングのサポートを提供 --> <context:component-scan base-package="com.w3codebox" /> <!--変換、フォーマッティング、バリデーションのサポートを提供 --> <mvc:annotation-driven/> </beans>
これはシンプルなJSPページで、コントローラーが返すメッセージを表示します。
index.jsp
<html> <body> <p>Welcome to Spring MVC Tutorial</p> </body> </html>
出力:
SpringMVC
SpringMVCフォーム
SpringMVCアプリケーション
SpringMVCバリデーション
SpringMVC Tiles