1.1 Spring MVC 基本概念
- DispatcherServlet
前端控制器,前端用户的 request 申请通过 DispatcherServlet 分发给各个控制器来生成业务数据 Model,再通过 DispatcherServlet 传递给 View 实现最终的页面出现。能够说 Spring MVC 将数据业务逻辑和页面出现拆散是通过 DispatcherServlet 实现的。 - HandlerAdapter
Handler 是 DispatvherServlet 外部应用的一个类,是 DispatcherServlet 调用 Controller 的一个两头过渡对象,能够看做是 controller 的一种表现形式,在 Spring MVC 中,通过各种 annotation 来辨认 Controller,然而 Spring MVC 中没有相似于接口的 controller 或者 interface 来找到 controller,最终 controller 以 handler 模式呈现。
HandlerAdapter 是适配器模式,将各种不同类型的 handler 适配成 DispatcherServlet
能够应用的 handler,DispatcherServlet 就能够很轻松的调用 controller。 - HandlerInterceptor
拦截器,在被拦挡对象的前后增加操作,这个接口有三种办法,preHandle,postHandle,afterCpmpletion。 - HandlerMapping
Mapping 就是 DispatcherServlet 和 Controller 之间映射关系的一品种,负责通知 DispatcherServlet 在一个申请到来之后由哪一个 Controller 来响应本次申请。
在 HandlerMapping 工作结束之后,会给 DispatcherServlet 返回一个 HandlerAdapter, 其中包含的内容一方面是某一个 Controller 具体的实例,另一方面是 Controller 被包裹的 HnadlerInterceptor,形成了一个执行的链条 HandlerExecutionChain 往下走。 - HandlerExecutionChain
- ModelAndView
无论是 Model 还是 Map,最终在 DispatcherServlet 中都会转换成 ModelAndView,所以能够把 ModelAndView 看作 Model 的具体表现。