Spring MVC核心组件
Spring MVC执行流程(重点了解)
具体的执行流程介绍:
- 用户在浏览器提交请求会到前端控制器DispatcherServlet进行处理。
- 前端控制器DispatcherServlet收到请求后,将请求转给处理器映射器HandlerMapping。
- 处理器映射器HandlerMapping根据request请求的URL等信息查找能够进行处理的Handler,以及相关拦截器interceptor,并构造HandlerExecutionChain执行链,然后将构造好的HandlerExecutionChain执行链对象返回给前端控制器DispatcherServlet,执行链包含一个处理器对象和一或多个拦截器。
- 前端控制器DispatcherServlet根据处理器执行链的处理器,能够找到其对应的处理器适配器HandlerAdapter;
- 处理器适配器HandlerAdapter调用相应的处理器Handler,即让我们写的具体的Controller方法执行。
- Controller处理完后返回ModelAndView给HandlerAdapter(ModelAndView表示SpringMVC的封装对象,将model和view封装在一起)。
- 处理器适配器HandlerAdapter将Controller执行结果ModelAndView返回给前端控制器DispatcherServlet。
- 前端控制器DispatcherServlet调用视图解析器ViewReslover处理ModelAndView。
视图解析器ViewReslover解析后根据逻辑视图名解析成物理视图名即具体的页面地址,生成并返回具体对象View(springmvc封装对象,是一个接口)。 - 前端控制器DispatcherServlet根据对象View进行视图渲染(即将模型数据model填充至视图中)。
- 最后前端控制器DispatcherServlet向用户返回响应,至此就全部完成了。
核心组件说明
- DispatcherServlet:中央调度器,也称前端控制器,在MVC架构中相当于C,即控制层,它是整个流程的控制中心,由它调用其它组件处理用户的请求,中央调度器的存在降低了组件之间的耦合性,系统扩展性提高,由框架实现。
- HandlerMapping:处理器映射器,负责根据用户请求url找到要执行的Handler,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。由框架实现。
- Handler(需要程序员开发具体的Controller):处理器,Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
- HandlerAdapter:处理器适配器,通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。由框架实现。
- ViewResolver:视图解析器,View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。由框架实现。
- View(需要程序员开发jsp等页面):视图,springmvc框架提供了很多的View视图类型的支持,包括:jsp、jstlView、freemarkerView、pdfView等。一般需要我们根据业务需求开发具体的页面。