SpringMVC構造



プロジェクトのロード構造

  • Springプロジェクトドライバに関連するXMLは、web、root-context、servlet-contextファイルです.
    このファイルのweb.xmlはTomcatドライバに関する設定で、残りのファイルはスプリングに関する設定です.
  • web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/spring/root-context.xml</param-value>
    	</context-param>
    	
    	<!-- Creates the Spring Container shared by all Servlets and Filters -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    
    	<!-- Processes application requests -->
    	<servlet>
    		<servlet-name>appServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    		
    	<servlet-mapping>
    		<servlet-name>appServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    
    </web-app>
    SpringMVCプロジェクトをEclipseで生成する際に自動的に生成されるWeb.xml

  • プロジェクトを起動するときは、対応するxmlファイルから開始します.
    ファイルの上部には、最初に駆動されたContext Listenerが登録されています.

  • context-paramにはroot-contextが含まれています.xmlのパス、listenerはSpringMVCのContextLoaderListenerを登録しています.このContextLoaderListenerは、Webアプリケーションドライバの場合と同様に、最初に実行されます.

  • root-context.xmlを処理する場合はroot-contextを使用します.xmlのオブジェクト(bean)設定が機能します.
    次に、Springの領域にbeanを作成し、オブジェクト間の依存性を処理します.

  • その後SpringMVCで使用されるDispatcherServiceletのテンプレートに関する設定が有効になります.
    このコードにはorgが含まれています.springframework.web.servlet.DispatcherServiceletクラスは、SpringMVC構造の中で最もコアなクラスであり、内部でWeb関連処理を準備するためのファイルはServicelet-contextである.xmlファイル.

  • DispatcherServiceletは、servletコンテキストとしてXML WebApplicationContextを使用します.xmlをロードおよび解析します.このプロセスでは、登録されたbeanは既存のbeanにバインドされます.
  • SpringMVCの基本構造



    1.Dispatcherサーブレットによるユーザ要求の処理
    	<servlet>
    		<servlet-name>appServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    		
    	<servlet-mapping>
    		<servlet-name>appServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    コードを表示すると、DispatcherServiceletはすべてのリクエストを処理します.
    2)、3)HandleMappingは、Requestインタフェースを実現した複数のオブジェクトのうち、RequestMappingHandleMappingのように@RequestMapping操作が適用されたことにより判断される.正しいコントローラが見つかった場合は、Handler Adapterを使用してコントローラ操作を行います.
    4)実際の開発者の要求処理ロジック、View(JSP,html...)を含むで渡されるデータは主にモデルと呼ばれるオブジェクトに含まれ、コントローラの戻りタイプはView Resolverを使用します.
    5)ViewResolverは、コントローラから返された結果をどのビューで処理するかを説明します.最も一般的な設定はservlet-contextです.XMLを使用したInternalResourceViewResolver
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<beans:property name="prefix" value="/WEB-INF/views/" />
    		<beans:property name="suffix" value=".jsp" />
    	</beans:bean>
    	
    	<context:component-scan base-package="org.zerock.controller" />
    6)、7)Viewは、Jspなどで作成したロールを使用して、実際に送信する必要がある応答をDispatcherServiceletに送信する.

    サマリ


    Springプロジェクトのロード構造

  • Spring Frameworkがプロジェクト駆動時に初めて実行するタスクはwebです.xmlで説明します.
  • は、最初にContextLoaderListenerによって駆動する
  • である.
  • プロジェクトが開始されると、WebApplicationContextというプロジェクトで使用されるメモリに割り当てられます.
  • そしてroot-contextです.xmlファイルの設定が役立ちます.
  • ファイルで定義されたbeanはWebApplicationContextで作成され、処理依存性
  • である.
  • DispatcherServicelet、このプロセスで登録されたbeanは、既存のbeanにバインドされている
  • SpringMVCの基本構造

  • ユーザ要求Dispatcherサーブレット(フロントエンドコントローラ)処理
  • ,3)HandlerMapping-RequestMappingHandlerMapping@RequestMapping操作位置決め-->完了時HandlerAdapter操作コントローラ使用
    4)実開発者の要求処理ロジック
    5)ViewResolver解釈
  • ビュー処理コントローラによって返される結果