Spring MVC 是什么
从 Spring-Overview 图中可以看出 Spring 支持 Web 应用。 Spring Web 层包括 spring-web, spring-webmvc,spring-websocket 和 spring-webmvc-portlet 模块。
spring-webmvc:也被称为 Web-Servlet module,包含 MVC 模式的实现和 REST Web Service 的实现。
Spring MVC 详细流程
- 用户发送请求到 DispatcherServlet。
- DispatcherServlet 对 URL 进行解析,通过 URL 调用 HandlerMapping,获得 Handler 以及该对象对应的拦截器,返回 HandlerExecutionChain 对象。
- 选择合适 Handler 对象的适配器 HandlerAdapter,执行拦截器中的postHandle方法。
- 开始执行 Handler (Controller),向 DispatcherServlet 返回一个ModelAndView 对象。
- 根据返回的ModelAndView,选择一个适合的ViewResolver,ViewResolve 创建一个 View 对象返回给 DispatcherServlet.
- DispatcherServlet 得到 View 对象,调用 View 对象中的 render 方法进行视图渲染。
- DispatcherServlet 将渲染结果返回给客户端。
Spring MVC 组件说明
DispatcherServlet:
作用:
DispatcherServlet 是整个流程控制的核心。优点:
1)与其他 Web MVC 框架相似,Spring MVC 也是一个请求驱动的,围绕一个核心 Servlet 设计的 MVC 框架。这些核心 Servlet 一般用来调度合适的处理器来处理请求,也提供 Web 应用开发中一些使用的功能。相比于其他的Servlet,DispatcherServlet 更好的集成了 Spring IOC 容器,这使得我们在平常开发中,可以使用 Spring 拥有的每一个特性。
2)DispatcherServlet的存在降低了组件之间的耦合性。
HandleMapping:
作用:
DispatcherServlet 通过 HandleMapping 为每个请求找到正确的 Handler对象。返回值:
HandlerExecutionChain对象。由目标 Handler 和 一组HandlerInterceptor组成。
HandlerAdapter:
- 作用:
1)调用HandlerAdapter.support 方法,选择合适 Handler 的适配器。
2)调用HandlerAdapter.handle 方法进行目标 Handler 的调用,得到 ModelAndView 返回值。
ViewResolver
- 作用:
根据 ModelAndView 中给定的 viewName 信息, 再结合相关配置,创建 View 对象。