springMvc原理

Spring MVC 的核心组件和大致处理流程
springMvc原理
①、DispatcherServlet 是SpringMVC 中的前端控制器(Front Controller),
负责接收Request 并将Request 转发给对应的处理组件。
② 、HanlerMapping 是SpringMVC 中完成url 到Controller 映射的组件。
DispatcherServlet 接收Request, 然后从HandlerMapping 查找处理Request 的
Controller。
③、Controller 处理Request,并返回ModelAndView 对象,Controller 是SpringMVC
中负责处理Request 的组件(类似于Struts2 中的Action),ModelAndView 是封装结果
视图的组件。
④、⑤、⑥视图解析器解析ModelAndView 对象并返回对应的视图给客户端。
在前面的章节中我们已经大致了解到,容器初始化时会建立所有url 和Controller 中的
Method 的对应关系,保存到HandlerMapping 中,用户请求是根据Request 请求的
url 快速定位到Controller 中的某个方法。在Spring 中先将url 和Controller 的对应关
系,保存到Map<url,Controller>中。Web 容器启动时会通知Spring 初始化容器(加载
Bean 的定义信息和初始化所有单例Bean),然后SpringMVC 会遍历容器中的Bean,获
取每一个Controller 中的所有方法访问的url,然后将url 和Controller 保存到一个Map
中;这样就可以根据Request 快速定位到Controller,因为最终处理Request 的是
Controller 中的方法,Map 中只保留了url 和Controller 中的对应关系,所以要根据
Request 的url 进一步确认Controller 中的Method,这一步工作的原理就是拼接
Controller 的url(Controller 上@RequestMapping 的值) 和方法的url(Method 上
@RequestMapping 的值),与request 的url 进行匹配,找到匹配的那个方法;确定处
理请求的Method 后,接下来的任务就是参数绑定,把Request 中参数绑定到方法的形
式参数上。
(同时,可结合运行时序图和源码查看具体spring是怎么做的,上一篇博客有springMVC的运行时序图)