SpringMVC的核心组件:
- DispathcerServlet:前端控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合性,是整个SpringMVC的核心模块
- Handler:处理器,完成具体的业务逻辑,相当于Servlet
- HandlerMapping:DispatcherServlet通过HandlerMapping将请求映射到不同的Handler
- HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要一些拦截处理,可以通过实现该接口完成
- HandlerExecutorChain:处理器执行链,包括两部分内容:Handler和HandlerInterceptor[系统会有一个默认的HandlerInterceptor,如果需要额外的,可以额外添加拦截器进行设置]
- HandlerAdapter:处理器适配器,Handler执行业务方法之前,需要进行一系列的操作,包括表单数据验证,数据类型的转换,将表单数据封装到POJO……,这一系列操作都是由该组件完成
- ModelAndView:封装了数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet
- ViewResolver:视图解析器,DispatcherServlet通过它可以将逻辑视图转换为物理视图,最终将渲染的结果响应给客户端
工作流程
- 客户端请求被DispatcherServlet接收
- 根据HandlerMapping映射到不同的Handler
- 生成Handler和HandlerInterceptor
- Handler和HandlerInterceptor以HandlerExecutionChain的形式统一并返回给DispatcherServlet
- DispatcherServlet通过HandlerAdapter调用Handler的方法完成具体的业务逻辑处理
- 返回一个ModelAndView对象给DispatcherServlet
- DispatcherServlet将获取到的ModelAndView对象传给ViewResolver视图解析器,将逻辑视图解析为物理视图
- ViewResolver返回一个View给DispatcherServlet
- DispatcherServlet根据View进行视图渲染【数据填充到视图中】
- DispatcherServlet将渲染之后的视图响应给客户端、
流程图如下: