在学习框架之前,首先了解一下Spring MVC框架的整体请求流程和使用到的API类.
Spring MVC 框架是高度可配置的,包含多种视图技术,例如JSP、FreeMarker、Tiles、iText和POI. Spring MVC框架并不关心使用的视图技术,也不会强迫开发者使用JSP.
Spring MVC执行流程
Spring MVC执行流程如图所示
SpringMVC的执行流程如下.
1.用户点击某个请求路径,发起一个HTTP request请求,该请求会被提交到DispatcherServlet(前端控制器);
2.由DispatcherServlet请求一个或多个HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain).
3.DispatherServlet将执行链返回的Handler信息发送给HandlerAdapter(处理器适配器);
4.HandlerAdapter根据Handler信息找到并执行相应的Handler(常称为Controller);
5.Handler执行完毕后会返回给HandlerAdapter一个ModelAndView对象(SpringMVC的底层对象,包括Model数据模型和View视图信息)
6.HandlerAdapter接收到ModelAndView对象后,将其返回给DispatcherServlet.
7.DispatcherServlet接收到ModelAndView对象后,会请求ViewResolver(视图解析器)对视图进行解析;
8.ViewResolver根据View信息匹配到相应的视图结果,并返回给DispatcherServlet;
9.DispatcherServlet接收到具体的View视图后,进行视图渲染,将Model中的模型数据填充到View视图中的request域,生成最终的View(视图)
10.视图负责将结果显示到浏览器(客户端).
Spring MVC 接口
Spring MVC 涉及到的组件有DispatcherServlet(前端控制器),HandlerMapping(处理器映射器),HandlerAdapter(处理器适配器),Handler(处理器),ViewResolver(视图解析器)和View(视图).下面对各个组件的功能说明如下.
1)DispatcherServlet
DispatcherServlet是前端控制器,从流程图中可以看出,Spring MVC的所有请求都要经过DispatcherServlet来统一分发.DispatcherServlet相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一的调度,以降低组件之间的耦合性,有利于组件之间的拓展.
2)HandlerMapping
HandlerMapping是处理器映射器,其作用是根据请求的URL路径,通过注解或者XML配置,寻找匹配的处理器(Handler)信息.
3)HandlerAdapter
HandlerAdapter是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler).
4)Handler
Handlers是处理器,和Java Servlet扮演的角色一致.起作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至ModelAndView对象中.
5)View Resolver
View Resolver是视图解析器,其作用是进行解析操作,通过ModelAndView对象中的View信息将逻辑视图名解析成真正的视图View(如通过一个JSP路径返回一个真正的JSP页面).
6)View
View是视图,其本身是一个接口,实现类支持不同的View类型(JSP,FreeMarker,Excel等).
以上组件中,需要开发人员进行开发的事处理器(Handler,常称Controller)和视图(View).通俗的说,要开发处理该请求的具体代码逻辑,以及最终展示给用户的界面.
注意:由于Spring MVC结构比较复杂,所以学习的时候也要掌握学习方法.首先要明确Spring MVC是一个工具,既然是工具,那么我们就需要先掌握工具的使用方法,不要陷入细节中,深入浅出,慢慢通过实际运用来加深对其的理解.