Spring MVC hello worldの例

Spring 4 MVC Hello World]。リンク://spring3/spring-3-mvc-hello-world-example/[Maven + Spring 3 MVC

こんにちは世界]

このチュートリアルでは、Spring MVC hello world Webアプリケーションを紹介します。

使用される技術:

  1. Spring 2.5.6

  2. JDK 1.6

  3. Eclipse 3.6

  4. Maven 3

1. MVC Basic

Spring MVC Webアプリケーションでは、3つの標準MVC(Model、Views、Controller)コンポーネントで構成されています。

  1. モデル - サービスレイヤーによって処理されるドメインオブジェクト

(ビジネスロジック)または永続レイヤー(データベース操作)。

  1. ビュー - データを表示します. 通常はJavaで記述されたJSPページです

標準タグライブラリ(JSTL)。

  1. コントローラ - ビジネスのためのURLマッピングとサービス層との対話

モデルを処理して返します。

次の図は、Spring MVC WebアプリケーションがWebリクエストをどのように処理するかを示しています。

__Figure 1.1 - 画像はhttp://docs.spring.io/spring/docs/2.5.6/reference/mvc.html[Spring MVC reference]から少し変更してコピーしました。

spring mvc concepts、title = "spring mvc concepts"、width = 640、height = 395

Figure 1.2 - Imageはこの本からコピーされます:

spring-mvc-concepts-2、title = "spring-mvc-concepts-2"、width = 629、height = 480

  • Note ** + Spring MVCでは、コアディスパッチャコンポーネントはフロントコントローラ(デザインパターン)として機能する `DispatcherServlet`です。

すべてのウェブリクエストはこの 'DispatcherServlet`を経由しなければならず、 `DispatcherServlet`はウェブリクエストを適切なハンドラにディスパッチします。

2.ディレクトリ構造

標準のMavenプロジェクトディレクトリ構造。

spring2-mvc-hello-world、width = 463、height = 386

3. Maven

spring-webmvc`依存関係を宣言すると、Mavenは自動的に推移依存関係を管理するのに役立ちます( spring-webmvc`が必要とする、 spring-context`や spring-beans`のような他の依存関係をダウンロードします)。

JSTLテクノロジでJSPページを使用している場合は、 `jstl`依存も含めてください。

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/4.0.0
    http://maven.apache.org/maven-v4__0__0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mkyong.common</groupId>
    <artifactId>spring2-mvc-xml-hello-world</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Spring 2 MVC</name>

    <properties>
        <jdk.version>1.6</jdk.version>
        <spring.version>2.5.6</spring.version>
        <jstl.version>1.2</jstl.version>
        <servletapi.version>2.5</servletapi.version>

    </properties>

    <dependencies>

        <!-- Spring MVC framework -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- JSTL -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>

        <!-- for compile only, your container should have this -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servletapi.version}</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>

      <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>

                <!-- embedded jetty, good for testing -->
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.11.v20150529</version>
            <configuration>
                <scanIntervalSeconds>10</scanIntervalSeconds>
                <webApp>
                    <contextPath>/spring2</contextPath>
                </webApp>
            </configuration>
        </plugin>

                <!-- configure Eclipse workspace -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
                <wtpversion>2.0</wtpversion>
                <wtpContextName>spring2</wtpContextName>
            </configuration>
        </plugin>

      </plugins>

    </build>

</project>

4.スプリングコントローラ

Springには多くのコントローラが付属していますが、通常は AbstractController`を拡張し、 handleRequestInternal() `メソッドをオーバーライドするだけです。

HelloWorldController.java

package com.mkyong.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") - どのビューをユーザに返すべきかを識別するために、この例では `HelloWorldPage.jsp`が返されます。

4.2 model.addObject( "msg"、 "hello world") - "hello world"文字列を "msg"というモデルに追加し、後でEL `$ {msg}`を使って "hello world"文字列。

5.ビュー(JSPページ)

この場合、 "view"はJSPページで、式言語(EL)$ \ {msg}を介してモデル "msg"に格納されている値 "hello world"を表示できます。

HelloWorldPage.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
    <h1>Spring MVC Hello World Example</h1>

    <h2>${msg}</h2>
</body>
</html>
  • 注意** $ \ {msg}が "msg"モデル内の値ではなく、そのまま表示される場合は、デフォルトの式言語を無効にする古いJSP 1.2記述子によって引き起こされる可能性があります。/spring-mvc/modelandviews-model-value-is-jsp-via-el/[solution]はここに表示されます。

6.春のXML設定

6.1 Spring ControllerとviewResolverを宣言しました。

mvc-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean name="/welcome.htm"
        class="com.mkyong.common.controller.HelloWorldController"/>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

</beans>

{空} 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は自動的に `BeanNameUrlHandlerMapping`を作成します。詳細については、この記事の BeanNameUrlHandlerMapping example を参照してください。

6.2 web.xml`では htm`拡張で終わるWebリクエスト全体を処理するフロントコントローラとして動作する `DispatcherServlet`サーブレットを宣言しました。

web.xml

<web-app id="WebApp__ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app__2__4.xsd">

  <display-name>Spring Web MVC Application</display-name>

  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
             org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>** .htm</url-pattern>
  </servlet-mapping>

</web-app>
  • Note ** + mvc-dispatcher`は、Spring XML設定をロードするファイルを定義するために使用されます。デフォルトでは、サーブレット名 `mvc-dispatcher`を -servlet.xml`に結合することで、SpringのXML設定ファイルを探します。

この例では、Springはこのファイル( mvc-dispatcher-servlet.xml )を探します。

7.デモ

7.1 Mavenでこのプロジェクトを実行するには:

$ mvn jetty:run

7.2 Eclipse IDEでこのプロジェクトを実行するには、次のMavenコマンドを使用してEclipseプロジェクト設定を作成します。

$ mvn eclipse:eclipse

プロジェクトを手動でインポートし、サーバープラグインから開始します。

spring2-mvc-demo、width = 710、height = 314

使い方?

  1. http://localhost:8080/spring2/welcome.htmが要求されます .

  2. URLは ".htm"拡張子で終わるので、リダイレクト先になります

"DispatcherServlet"を呼び出し、デフォルトのBeanNameUrlHandlerMappingにリクエストを送信します。

  1. BeanNameUrlHandlerMappingは、HelloWorldControllerを

DispatcherServlet。

  1. DispatcherServletがHelloWorldControllerに要求を転送します.

  2. HelloWorldControllerはそれを処理し、ModelAndViewオブジェクトを返します.

ビュー名 "HelloWorldPage"。

  1. DispatcherServletはModelAndViewを受け取り、viewResolver

それを処理する。

  1. viewResolverは `/WEB-INF/pages/HelloWorldPage.jsp`を返します.

DispatcherServlet

  1. DispatcherServletは "HelloWorldPage.jsp"をユーザーに返します.

ソースコードをダウンロードする

ダウンロードする - spring2-mvc-xml-hello-world.zip (14 KB)

参考文献

ドキュメンテーション]

hello world リンク://tag/maven/[maven] spring mvc

前の投稿:Maven - WebアプリケーションをWildFlyにデプロイする
次の投稿:Android ToggleButtonの例