步骤解析:
1、用户向服务器发送请求,请求被Spring MVC的前端控制器DispatcherServlet截获;
2、DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URI(请求资源标识符)。然后根据该URI,调用HandlerMapping(处理器映射)获得该Handler配置的所有相关对象,包括Handler对象以及Handler对象对应的拦截器,这些对象会被封装到一个 HandlerExecutionChain对象 当中返回;
3、DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter(处理机适配器)。一个HandlerAdapter会被用于处理多种(一类)Handler,并调用Handler实际处理请求的方法;
4、在调用Handler实际处理请求的方法之前,HandlerAdapter(处理机适配器) 首先会结合用户配置对请求消息进行转换(例如,将JSON/XML请求消息转换成一个Java对象),然后通过DataBinder(数据绑定器)将请求中的模型数据绑定到Handler(Controller)对应的处理方法的参数中。在消息转换和数据绑定过程中,Spring MVC会做一些额外的处理,比如数据类型转换、数据格式化工作和数据合法性校验等;
5、Handler调用业务逻辑组件完成对请求的处理后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中应该包含视图名或者视图名和模型;
6、DispatcherServlet根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet;
7、DispatcherServlet调用视图解析器ViewResolver结合Model来渲染视图View;
8、DispatcherServlet将视图渲染结果返回给客户端。
在以上八个步骤中,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver等核心组件相互配合来完成Spring MVC 请求-响应的整个工作流程。这些核心组件所完成的工作对开发者是透明的,也就是说,开发者并不需要关心这些组件是如何工作的,开发者只需要专注在Handler(Controller)当中完成对请求的业务逻辑处理即可,这也正是MVC框架的价值体现。