1. DispatcherServlet表示前置控制器,用户发出请求,DispatcherServlet接收请求并且拦截请求

    <!--注册DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--关联一个springmvc的配置文件  springmvc-servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--启动级别为1-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
         <servlet-name>springmvc</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
    
  2. HandlerMapping为处理器映射器,DispatcherServlet调用HandlerMapping,HandlerMapping根据请求的url找到对应的Handler

    <!--处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    
  3. HandlerExcution表示具体的Handler,其主要作用就是根据url查找控制器

  4. HandlerExcution将解析后的信息传回DispatherServlet

  5. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler

    <!--处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    
  6. Handler让具体的Controller执行

  7. Controller将具体的执行信息返回给HandlerAdapter,比如ModelAndView

  8. HandlerAdapter将视图逻辑名或者模型传递给DispatcherServlet

  9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递过来的逻辑视图名

    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"  id="internalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    
  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet

  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图

  12. 最终视图呈现给用户

 posted on 2021-10-12 12:33  瞎弄  阅读(36)  评论(0编辑  收藏  举报