Spring MVC工作原理

一、工作原理图

Spring MVC工作原理插图

二、工作流程

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
  4. DispatcherServlet调用HandlerAdapter处理器适配器
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
  11. DispatcherServlet响应用户

三、配置详情

1、web.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
  <display-name>SpringMVC</display-name
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list
  <!-- Spring ContextLoaderListener --> 
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener
  <!--配置SpringMVC--> 
  <servlet>
    <servlet-name>spring-mvc</servlet-name
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class
    <init-param>
      <param-name>contextConfigLocation</param-name
      <!--mvc的配置文件--> 
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param
    <!--服务器启动就加载--> 
    <load-on-startup>1</load-on-startup>
  </servlet
  <servlet-mapping>
    <servlet-name>spring-mvc</servlet-name
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

2、spring-mvc.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
  <mvc:annotation-driven/> 
  <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --> 
  <context:component-scan base-package="com.ntan520"/> 
  <!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 --> 
  <beans:bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> 
  <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 
  <!-- 这个类用于Spring MVC视图解析 --> 
  <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/view/"/> 
    <beans:property name="suffix" value=".jsp"/>
  </beans:bean>
  <!-- 配置资源 -->
  <mvc:resources location="/static" mapping="/static/**"></mvc:resources>
</beans:beans>

发表评论

欢迎阅读『Spring MVC工作原理|Java、开发语言、框架算法|Nick Tan-梓潼Blog』