httpリクエストがspringMVCにどのように処理されたか

14549 ワード

前言
ブロガーgithub
ブログhttp://blog.healerjean.com
長い間spirngbootを使って、spirngMVcのあのセットは本当に少し忘れます
1、スプリングMvcの配置を見ておきましょう
1.1、web.xml構成

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>StudySpringMvcOne</display-name>
  
  <!-- springmvc      -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- contextConfigLocation  springmvc       (        、     )
  	     contextConfigLocation,      /WEB-INF/servlet  -serlvet.xml(springmvc-servlet.xml)
  	 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-servlet.xml</param-value>
  	</init-param>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!--*.action,   .action    DispatcherServlet    ,     URL         URL
  	   :/,         DispatcherServlet    ,               DispatcherServlet    ,  <mvc:default-servlet-handler />
  	           RESTful   url
  	   :/*,      ,      ,        jsp   ,
  	    DispatcherServlet  jsp  ,    jspUrl  handler,   。
  	
  	 -->
  	/
  	
  	
  
    
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  




1.2、 springmvc-servlet.xml



<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:p="http://www.springframework.org/schema/p"  
 xmlns:mvc="http://www.springframework.org/schema/mvc"  
 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-3.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
              

 <context:component-scan base-package="com.hlj.control"/>
 


			
 <mvc:default-servlet-handler/>
 
 
			
<mvc:annotation-driven/>
    
   
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    
        <property name="prefix" value="/WEB-INF/jsp/">property>
    
        <property name="suffix" value=".jsp">property>
    bean>



2、具体的な仕事の流れ



     (DispatcherServlet):    ,    ,      CPU。

      (HandlerMapping):  URL      

   (Handler):(              )

      (HandlerAdapter):           ,               ,         (        )

     (ViewResovler):      ,       ,    ,          


ステップ1:ユーザーがフロントエンドコントローラへの要求を開始する(DispatcherServicelet)
第2歩:フロントエンドコントローラはプロセッサマッパー(HandlerMappering)にプロセッサ(Handle)(つまりController)を検索するように要求する:xml構成あるいは注釈によって検索して、後でプロセッサマッパー(HandlerMappering)を見つけてフロントエンドコントローラのように実行チェーン(HandlerExecutionChain)に戻る
ステップ3:フロントエンドコントローラ(DispatcherServicelet)適切なプロセッサアダプタ(HandlerAdapter)を選択してプロセッサ(Handler)を実行する

      ,Spring            

HttpMessageConveter:      ( Json、xml   )       ,             

    :           。 String   Integer、Double 

    :         (  、   ),       BindingResult Error 


ステップ4:HandlerはプロセッサアダプタにModelAndViewを返します(handleはこのデータを返します)
ステップ5:プロセッサアダプタがフロントエンドコントローラにModelAndViewを返す
ステップ6:フロントエンドコントローラはビュー解析器(ViewResolver)にビュー解析を要求し、ビュー解析器はフロントエンドコントローラのようにViewを返し、フロントエンドコントローラはビューをレンダリングし、結果をクライアントに返す
ContactAuthor