SpringMvc工作流程

springmvc核心是由DispatcherServlet控制调度请求地址、HandlerMapping和HandlerAdapter 达成一整套处理流程
MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作

SpringMVC的原理

1、客户端请求在web.xml中配置好DispatcherServlet,并且接受一切HTTP请求(如*.do)
2、当用户的请求被截获时,根据请求的URL生成一个处理对象,交给DispatcherServlet
4、DispatcherServlet通过HandlerMapping的配置定位到特定的Controller(@Controller初始化默认配置 Handler)
5、然后通过HandlerAdapter调用Handler中对应的业务处理方法(传过来的Handler与注册好的HandlerAdapter进行匹配)(方法级的拦截)
6、业务处理方法返回一个逻辑视图名(View)和模型数据(ModelAndView),交给 DispatcherServlet
7、DispatcherServlet调用ViewResolver解析出真实的视图对象,得到这个视图对象后,DispatcherServlet就使用Model对其进行渲染,将最后结果返回给用户

DispatcherServlet有一个初始化方法initStrategies,它在WebApplicationContext初始化后执行,此时所有的组件Bean均已可用(方法通过反射机制查找并装配Spring容器中)
Spring MVC也是基于Servlet
@Controller注解很重要,Spring会在启动的时候扫描它,将其划入到Handler中去

spring3.0.4以后版本提供了对静态资源文件的访问
<mvc:resourcesmappingmvc:resourcesmapping="/images/**" location="/images/" />

HandlerMapping接口的实现:
BeanNameUrlHandlerMapping :通过对比url和bean的name找到对应的对象
SimpleUrlHandlerMapping :也是直接配置url和对应bean,比BeanNameUrlHandlerMapping功能更多
DefaultAnnotationHandlerMapping : 主要是针对注解配置@RequestMapping的,已过时
RequestMappingHandlerMapping :取代了上面一个

HandlerAdapter 接口实现:
HttpRequestHandlerAdapter : 要求handler实现HttpRequestHandler接口,该接口的方法为void handleRequest(HttpServletRequest,HttpServletResponse)也就是 handler必须有一个handleRequest方法 
SimpleControllerHandlerAdapter:要求handler实现Controller接口,该接口的方法为ModelAndView handleRequest(HttpServletRequest, HttpServletResponse)       
AnnotationMethodHandlerAdapter :和上面的DefaultAnnotationHandlerMapping配对使用的,也已过时
RequestMappingHandlerAdapter : 和上面的RequestMappingHandlerMapping配对使用,针对@RequestMapping

主要工作有以下三项:
1)截获符合特定格式的URL请求。
2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。

群交流(262200309)
原文地址:https://www.cnblogs.com/webster1/p/8525009.html