Spring MVC hello worldの例

Spring MVC Hello Worldの例

Note
このチュートリアルはSpring 2.5.6に基づいており、かなり時代遅れです。 新しいチュートリアルを検討してみてください:

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

使用される技術:

  1. 春2.5.6

  2. JDK 1.6

  3. Eclipse 3.6

  4. メーベン3

1. MVCベーシック

Spring MVC Webアプリケーションでは、3つの標準MVC(モデル、ビュー、コントローラー)コンポーネントで構成されています。

  1. モデル–サービス層(ビジネスロジック)または永続層(データベース操作)によって処理されるドメインオブジェクト。

  2. ビュー-データを表示します。通常は、Java標準タグライブラリ(JSTL)で記述されたJSPページです。

  3. コントローラー– URLマッピングおよびビジネス処理のためのサービス層とのやり取りを行い、モデルを返します。

次の図は、Spring MVC WebアプリケーションがWeb要求を処理する方法を示しています。

図1.1–画像はSpring MVC referenceからわずかに変更されてコピーされています。

spring mvc concepts

図1.2– _画像はこの本からコピーされています:Spring Recipes_

spring-mvc-concepts-2

Note
Spring MVCでは、コアディスパッチャーコンポーネントはDispatcherServletであり、フロントコントローラー(デザインパターン)として機能します。 すべてのWeb要求はこのDispatcherServletを通過する必要があり、DispatcherServletはWeb要求を適切なハンドラーにディスパッチします。

2. ディレクトリ構造

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

spring2-mvc-hello-world

3. メーベン

spring-webmvc依存関係を宣言すると、Mavenは推移的な依存関係を自動的に管理するのに役立ちます(spring-contextspring-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がビューテンプレートを検索する方法を定義します。 この場合、コントローラーHelloWorldControllerHelloWorldPageという名前のビューを返し、viewResolverは次のメカニズムでファイルを検索します:prefix + view name + suffix、つまり/WEB-INF/pages/HelloWorldPage.jsp

Note
実際には、web.xmlBeanNameUrlHandlerMappingを定義する必要はありません。デフォルトでは、ハンドラーマッピングが見つからない場合、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
  

Note
mvc-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

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

spring2-mvc-demo

使い方?

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

  2. URLは「.htm」拡張子で終わるため、「DispatcherServlet」にリダイレクトし、デフォルトのBeanNameUrlHandlerMappingにリクエストを送信します。

  3. BeanNameUrlHandlerMappingは、HelloWorldControllerをDispatcherServletに返します。

  4. DispatcherServletは、リクエストをHelloWorldControllerに転送します。

  5. HelloWorldControllerはそれを処理し、ビュー名「HelloWorldPage」を持つModelAndViewオブジェクトを返します。

  6. DispatcherServletはModelAndViewを受け取り、viewResolverを呼び出して処理します。

  7. viewResolverは、/WEB-INF/pages/HelloWorldPage.jspをDispatcherServletに返します。

  8. DispatcherServletは、「HelloWorldPage.jsp」をユーザーに返します。

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

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