1、什么是DispatchServlet?
在整个 Spring MVC 框架中,DispatcherServlet 处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应工作。
所有的请求都需要让它给我们进行处理,通常它还有一种名称叫做 控制器
2、SpringMVC的执行流程?
1、客户端发送请求给DispatcherServlet
2、然后我们的DispatcherServlet对象会继续调用service方法
3、(1)、首先进行判断,post请求是否是 enctype=multipart 类型,如果是则要将请求转换为我们的MultipartHttpServletRequest(专门处理表单文件的请求)
(2)、获取到映射处理器,通过我们的url请求路径获取到处理链
(3)、通过我们的处理链找到匹配的适配器
(4)、顺序执行我们的处理链的preHandle方法,如果返回了false,则倒序执行处理链中之前拦截器的afterCompletion()方法并立即返回
(5)、接着我们的适配器通过handle方法,来执行我们的controller(控制层)中的方法。
这里面运用了反射的原理,获取方法和返回值,设置方法的访问权限,调用执行方法
(6)、适配器执行完毕之后,返回一个ModelAndView给我们的DispatcherServlet,如果出现异常,则会被 HandlerExceptionResolver给再次解析,得到一个新的ModelAndView
(7)、由于ModelAndView我们的页面是不认识的,于是我们控制器DispatcherServlet会将它交给ViewReslover(视图解析器)
(8)、处理一番之后,我们可以得到真正的视图View,之后我们的ModelAndView会对View进行渲染
(9)、在返回结果处理中,视图渲染完成返回后,如果没有异常,调用所有的拦截器的afterCompletion方法; 如果有异常就倒序执行这些拦截器的afterCompletion方法;
(10)、执行完后交给客户端,数据可能是一个HTML,也可以是XML或JSON或者图片视频等...