---------------------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】