Spring MVC Hello Worldの例
Note
このチュートリアルはSpring 2.5.6に基づいており、かなり時代遅れです。 新しいチュートリアルを検討してみてください:
このチュートリアルでは、Spring MVC hello world Webアプリケーションを紹介します。
使用される技術:
-
春2.5.6
-
JDK 1.6
-
Eclipse 3.6
-
メーベン3
1. MVCベーシック
Spring MVC Webアプリケーションでは、3つの標準MVC(モデル、ビュー、コントローラー)コンポーネントで構成されています。
-
モデル–サービス層(ビジネスロジック)または永続層(データベース操作)によって処理されるドメインオブジェクト。
-
ビュー-データを表示します。通常は、Java標準タグライブラリ(JSTL)で記述されたJSPページです。
-
コントローラー– URLマッピングおよびビジネス処理のためのサービス層とのやり取りを行い、モデルを返します。
次の図は、Spring MVC WebアプリケーションがWeb要求を処理する方法を示しています。
図1.1–画像はSpring MVC referenceからわずかに変更されてコピーされています。
図1.2– _画像はこの本からコピーされています:Spring Recipes_
Note
Spring MVCでは、コアディスパッチャーコンポーネントはDispatcherServlet
であり、フロントコントローラー(デザインパターン)として機能します。 すべてのWeb要求はこのDispatcherServlet
を通過する必要があり、DispatcherServlet
はWeb要求を適切なハンドラーにディスパッチします。
2. ディレクトリ構造
標準のMavenプロジェクトのディレクトリ構造。
3. メーベン
spring-webmvc
依存関係を宣言すると、Mavenは推移的な依存関係を自動的に管理するのに役立ちます(spring-context
やspring-beans
などのspring-webmvc
に必要な他の依存関係をダウンロードします)。
JSTLテクノロジでJSPページを使用している場合は、jstl
依存関係も含めてください。
pom.xml
4.0.0 com.example.common spring2-mvc-xml-hello-world war 1.0-SNAPSHOT Spring 2 MVC 1.6 2.5.6 1.2 2.5 org.springframework spring-webmvc ${spring.version} javax.servlet jstl ${jstl.version} javax.servlet servlet-api ${servletapi.version} provided org.apache.maven.plugins maven-compiler-plugin 3.3 ${jdk.version} ${jdk.version} org.eclipse.jetty jetty-maven-plugin 9.2.11.v20150529 10 /spring2 org.apache.maven.plugins maven-eclipse-plugin 2.9 true true 2.0 spring2
4. スプリングコントローラー
Springには多くのコントローラーが付属しています。通常は、AbstractController
を拡張し、handleRequestInternal()
メソッドをオーバーライドするだけです。
HelloWorldController.java
package com.example.common.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class HelloWorldController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView model = new ModelAndView("HelloWorldPage"); model.addObject("msg", "hello world"); return model; } }
4.1 ModelAndView(“HelloWorldPage”) – To identify which view should return back to the user, in this example HelloWorldPage.jsp
will be returned.
4.2 model.addObject(“msg”, “hello world”) – Add a “hello world” string into a model named “msg”, later you can use EL ${msg}
to display the “hello world” string.
5. 表示(JSPページ)
この場合、「view」はJSPページであり、式言語(EL)$ {msg}を介して、モデル「msg」に格納されている値「helloworld」を表示できます。
HelloWorldPage.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>Spring MVC Hello World Example
${msg}
Note
$ {msg}が「msg」モデル内の値ではなくそのまま表示される場合は、古いJSP 1.2記述子が原因である可能性があり、式言語がデフォルトで無効になっています。 、ここでsolutionを参照してください。
6. Spring XML設定
6.1 Declared the Spring Controller and viewResolver.
mvc-dispatcher-servlet.xml
/WEB-INF/pages/ .jsp
1. Controller – Bean名/welcome.htm
を宣言し、それをHelloWorldController
にマップします。 つまり、/welcome.htm
パターンのURLが要求された場合、HelloWorldController
コントローラーがその要求を処理します。
2. viewResolver –Springがビューテンプレートを検索する方法を定義します。 この場合、コントローラーHelloWorldController
はHelloWorldPage
という名前のビューを返し、viewResolverは次のメカニズムでファイルを検索します:prefix + view name + suffix、つまり/WEB-INF/pages/HelloWorldPage.jsp
。
Note
実際には、web.xml
でBeanNameUrlHandlerMapping
を定義する必要はありません。デフォルトでは、ハンドラーマッピングが見つからない場合、DispatcherServletは%を作成します。 (t4)sは自動的に。 詳細については、この記事–BeanNameUrlHandlerMapping exampleを参照してください。
6.2 In web.xml
, declared a DispatcherServlet
servlet to act as the front-controller to handle all the entire web request which end with htm
extension.
web.xml
Spring Web MVC Application mvc-dispatcher org.springframework.web.servlet.DispatcherServlet 1 mvc-dispatcher *.htm
Notemvc-dispatcher
は、SpringXML構成をロードするファイルを定義するために使用されます。 デフォルトでは、サーブレット名mvc-dispatcher
を-servlet.xml
と結合することにより、SpringXML構成ファイルを検索します。
この例では、Springはこのファイル–mvc-dispatcher-servlet.xml
を検索します。
7. Demo
7.1 To run this project with Maven :
$ mvn jetty:run
7.2 To run this project in Eclipse IDE, create Eclipse project settings with the following Maven command :
$ mvn eclipse:eclipse
プロジェクトを手動でインポートし、サーバープラグインで開始します。
使い方?
-
URLは「.htm」拡張子で終わるため、「DispatcherServlet」にリダイレクトし、デフォルトのBeanNameUrlHandlerMappingにリクエストを送信します。
-
BeanNameUrlHandlerMappingは、HelloWorldControllerをDispatcherServletに返します。
-
DispatcherServletは、リクエストをHelloWorldControllerに転送します。
-
HelloWorldControllerはそれを処理し、ビュー名「HelloWorldPage」を持つModelAndViewオブジェクトを返します。
-
DispatcherServletはModelAndViewを受け取り、viewResolverを呼び出して処理します。
-
viewResolverは、
/WEB-INF/pages/HelloWorldPage.jsp
をDispatcherServletに返します。 -
DispatcherServletは、「HelloWorldPage.jsp」をユーザーに返します。
ソースコードをダウンロード
ダウンロード–spring2-mvc-xml-hello-world.zip(14 KB)