---------------------siwuxie095
SpringMVC 简介
1、SpringMVC 是应用在 Java EE 三层架构中的 Web 层的框架。和众多
其他 Web 框架一样,它基于 MVC 的设计理念。此外,它采用了松散耦合
可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
参考链接:http://www.iteye.com/blogs/subjects/springmvc-explore
2、SpringMVC 通过一套 MVC 注解,让 POJO 无需实现任何接口即可成
为处理请求的控制器。同时,SpringMVC 还支持 RESTful 风格的 URL 请
求。此外,SpringMVC 在数据绑定、视图解析、本地化处理及静态资源处
理上都有许多不俗的表现
它在框架设计、扩展性、灵活性等方面全面超越了 Struts、WebWork 等
MVC 框架,从原来的追赶者一跃成为 MVC 的领跑者
3、SpringMVC 相关文档链接
(1)中文文档:
https://linesh.gitbooks.io/spring-mvc-documentation-linesh-translation/content/
(2)英文文档:
https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html
4、Spring 的体系结构如下,其中:SpringMVC 位于 Web 模块中的 Servlet
注意:SpringMVC 并不是位于 Web 模块中的 Web
5、SpringMVC 是请求驱动,围绕 DispatcherServlet 这个核心进行展开,
DispatcherServlet 是 SpringMVC 的中央处理器,它负责把所有请求分发
到控制器。下图正是 DispatcherServlet 处理请求的工作流
「DispatcherServlet 应用的正是前端控制器的设计模式」
6、具体流程:
(1)用户发送请求到 DispatcherServlet
(2)DispatcherServlet 调用 HandlerMapping 查找 Handler
(3)HandlerMapping 向 DispatcherServlet 返回 HandlerExecutionChain,
其中包含 Handler 和 HandlerInterceptor[]
(4)DispatcherServlet 调用 HandlerAdapter 对 Handler 进行包装
(5)HandlerAdapter 执行 Handler(实际上是 Controller),处理业务逻辑
(6)Handler 执行完成,向 HandlerAdapter 返回 ModelAndView,其中包
含 Model 和 ViewName
(7)HandlerAdapter 向 DispatcherServlet 返回 ModelAndView
(8)DispatcherServlet 调用 ViewResolver 进行视图解析
(9)ViewResolver 向 DispatcherServlet 返回 View
(10)DispatcherServlet 调用 View 进行视图渲染,将 Model 中的数据填充
到 Request 域
(11)View 向 DispatcherServlet 返回渲染后的视图(html/json/xml/…)
(12)DispatcherServlet 返回响应给用户
参考链接:
参考链接1,参考链接2,参考链接3,参考链接4,参考链接5,参考链接6
7、综上所述:
整个流程其实就是 DispatcherServlet 和 HandlerMapping、HandlerAdapter、
ViewResolver、View 四者依次交互,并在 HandlerAdapter 处执行 Handler
8、SpringMVC 中的名词释义
DispatcherServlet |
核心分发器、前端控制器 |
HandlerMapping |
处理器映射 |
HandlerAdapter |
处理器适配器 |
HandlerExceptionResolver |
处理器异常解析器 |
ViewResolver |
视图解析器 |
LocaleResolver |
地区解析器 |
LocaleContextResolver |
地区上下文解析器 |
ThemeResolver |
主题解析器 |
HandlerExecutionChain |
处理器执行链 |
HandlerInterceptor |
处理器拦截器 |
注:以上都是 SpringMVC 中的类或接口
9、Controller(控制器) 和 Handler(处理器)的异同
(1)Controller 是 SpringMVC 中的接口(实),Handler 是 SpringMVC 中的概念(虚)
(2)Controller 一定属于 Handler,但 Handler 却不一定属于 Controller
【made by siwuxie095】