Spring开发模式的工作流程
Spring开发模式的工作流程正确的是( )
1.Spring MVC请所有的请求都提交给DispatcherServlet
2.DispatcherServlet请请求提交到目标Controller
3.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
4.视图对象负责渲染返回给客户端
5.找到ModelAndView对象指定的视图对象
6.Controller进行业务逻辑处理后,会返回一个ModelAndView
首先看下SpringMVC文档上给的流程图:
这张图片给了我们大概的执行流程:
1、用户请求首先发送到前端控制器DispatcherServlet,DispatcherServlet根据请求的信息来决定使用哪个页面控制器Controller(也就是我们通常编写的Controller)来处理该请求。找到控制器之后,DispatcherServlet将请求委托给控制器去处理。
2、接下来页面控制器开始处理用户请求,页面控制器会根据请求信息进行处理,调用业务层等等,处理完成之后,会把结果封装成一个ModelAndView返回给DispatcherServlet。
3、前端控制器DispatcherServlet接到页面控制器的返回结果后,根据返回的视图名选择相应的试图模板,并根据返回的数据进行渲染。
4、最后前端控制器DispatcherServlet将结果返回给用户。
更具体的流程
上面只是总体流程,接下来我们稍微深入一点,看下更具体的流程,这里没有图,只有步骤解析:
1、用户请求发送到前端控制器
DispatcherServlet。
2、前端控制器 DispatcherServlet 接收到请求后,DispatcherServlet 会使用 HandlerMapping 来处理,HandlerMapping 会查找到具体进行处理请求的 Handler 对象。
3、HandlerMapping 找到对应的 Handler 之后,并不是返回一个 Handler 原始对象,而是一个 Handler 执行链,在这个执行链中包括了拦截器和处理请求的 Handler。HandlerMapping 返回一个执行链给 DispatcherServlet。
4、DispatcherServlet 接收到执行链之后,会调用 Handler 适配器去执行Handler。
5、Handler 适配器执行完成 Handler(也就是我们写的 Controller)之后会得到一个 ModelAndView,并返回给 DispatcherServlet。
6、DispatcherServlet 接收到 Handler 适配器返回的 ModelAndView 之后,会根据其中的视图名调用视图解析器。
7、视图解析器根据逻辑视图名解析成一个真正的 View 视图,并返回给 DispatcherServlet。
8、DispatcherServlet 接收到视图之后,会根据上面的 ModelAndView 中的 model 来进行视图中数据的填充,也就是所谓的视图渲染。
9、渲染完成之后,DispatcherServlet 就可以将结果返回给用户了。