SpringMVCの簡単な紹介と使用


1:SpingMVCリクエストプロセス
1:(リクエスト開始-コントローラ探し)
SpringMVCのすべてのリクエストは、SpringMVCコントローラに顧客リクエストを転送する役割を果たすフロントエンドを介してサーブレットをスケジューリングします.通常のアプリケーションではコントローラが複数存在するため、DispatcherServiceletは1つ以上のプロセッサマッピングをクエリーして、要求をどこに送信するかを決定します.このプロセスでは,プロセッサマッピングは要求されたURL情報に基づいて判断する.
DispaterServicelet------プロセッサマッピング------コントローラ
2:(コントローラへのリクエスト)
正しいターゲットコントローラが見つかった後、DispatcherServiceletは要求を送信し、コントローラに到着した要求はその要求情報を保持し、コントローラの処理を待つ.(この時点でDispatcherServiceletは戻るのを待つ)
3:(コントローラ処理完了後)
制御は、関連するビジネスロジック処理を完了し、ユーザーに返す必要がある情報をパッケージ化し、出力をレンダリングするためのビュー名を表示し、元の要求、戻り情報(モデル)、およびビュー名をDispatcherServeretに転送する
4:(返却情報がコントローラから離れる――応答)
DispatcherServiceletは、上記の戻り情報を保持し、「ビュー解析器」を使用して、jspページなどの特定のビュー実装にビュー名を一致させる.適切に一致するビューが見つかった後、DispatcherServiceletはその最後の使命を果たし、ビューに戻り情報を渡します.ビューは戻り情報に基づいて出力されます.
まとめ:springMVCでは、要求はDispatcherServiceletによってコントローラに割り当てられ、コントローラが処理を完了した後に行われます.リクエストは、出力結果を表示するためにビューに送信されます.言い換えればspringMVCは、DispatcherService、プロセッサマッピング、コントローラ、ビュー解析器の間で要求を移動します.
2:SpringMVCの構築
1:まずweb.xmlでの構成
    <servlet>    
        <servlet-name>springMVC</servlet-name>    
        <servlet-class>    
            org.springframework.web.servlet.DispatcherServlet    
        </servlet-class>
        <init-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:config/spring/mvc-servlet.xml</param-value>
	</init-param>
        <load-on-startup>1</load-on-startup>    
    </servlet>

デフォルトでは、DispatcherServiceletは、ロード時にサーブレット-name名に基づくファイルからSpringアプリケーションコンテキストをロードします.(すなわちspringMVC-servlet.xml)この例ではでファイル名が変更されています.
    <servlet-mapping>    
        <servlet-name>springMVC</servlet-name>    
        <url-pattern>*.do</url-pattern>    
    </servlet-mapping>

この宣言は、スケジュールされたサーブレットがどのURL要求を処理するかを宣言します.
2:アプリケーションコンテキストの構成(mvc-servlet.xml)
        <!-- ico -->
	<mvc:resources mapping="/*.ico" location="/images/" />
	<!-- js -->
	<mvc:resources mapping="/js/**" location="/js/" />
	<!-- images -->
	<mvc:resources mapping="/images/**" location="/images/" />
	<!-- css -->
	<mvc:resources mapping="/css/**" location="/css/" />
	<!--    -->
	<mvc:annotation-driven />

は、静的リソースに対する要求を処理するために静的リソースにサービスするプロセッサを奨励します.
3:コントローラの作成:
package com.services.days.controller;

import java.util.Date;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.services.days.controller.base.BaseController;
import com.services.days.domain.TestUser;
import com.services.days.service.IUsersService;

@Controller
public class TestController extends BaseController{
	private static Logger logger = Logger.getLogger(TestController.class);
	
	@Resource(name = "usersService")
	private IUsersService usersService;

	@RequestMapping(value = "/doTest")
	public String doTest() {
		TestUser testUser = new TestUser();
		testUser.setCode("00221");
		testUser.setEmail("[email protected]");
		testUser.setPassword("pandy");
		testUser.setState("001");
		testUser.setCreateBy("01");
		testUser.setCreateDatetime(new Date());
		testUser.setModifyBy("001");
		testUser.setModifyDatetime(new Date());
		usersService.saveUser(testUser);
		System.out.println(testUser.toString());
		
		testUser = usersService.queryUsersById(3);
//		System.out.println(user.toString());

		System.out.println("Test success.......");
		return "success";
	}
	
	@RequestMapping(value="/investList")
	public ModelAndView investList() {
		return new ModelAndView("/shop/investList");
	}

}

上はユーザー向けの簡単なコントローラで、http://******/doTestを開始する役割を果たしています.doのリクエスト後、springMVCはリクエストをこのコントローラに送信しdoTest()メソッドを呼び出し、データベースに新しいTestUserを挿入します.
dispatcherServiceletが正しいプロセッサをどのように見つけるかについてspringMVCは多くのプロセッサ実装を提供しているが、ここでは一つ一つ説明しないが、@RequestMapping注釈を使用したコントローラおよびコントローラメソッドに要求をマッピングする:D e f a u l t AnnotationHandlerMappingを使用する.
D e f a ultAnnotationHandlerMappingでは、@RequestMapping注釈を使用したコントローラメソッドにリクエストがマッピングされます.しかし、コントローラを構築する際には、要求パラメータをコントローラのメソッドパラメータにバインドする注釈を使用して、検証と情報変換を行う必要があります.この場合、mvc-servletが必要です.xmlに次の文を追加します.
<mvc:annotation-driven />

具体的な機能略.
上のユーザーコントローラを見てみましょう.
@Controllerはよく知られています.@Component注釈に属しています.プロファイルのは、この注釈を使用したクラスを検索し、Beanとして登録するので、mvc-servletが必要です.xmlプロファイルにクリップを追加します.(もちろん、アプリケーション.xmlに書くのが一般的です)
<context:component-scan base-package="com.services.days" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>

このユーザコントローラでは、doTest()メソッドは注記@RequestMapping(value="/doTest")を使用しています.
http://doTest.doのリクエストはここに送信されます.ここでは単純なテストにすぎず,要求された上位ネーミングスペースとしてコントローラに関連@RequestMappingを追加していない.