前后端分离的开发模式中我们会使用@ResponseBody来把数据写入到响应体中。所以不需要进行页面的跳转。
故流程如下:
1.用户发起请求被DispatchServlet所处理
2.DispatchServlet通过HandlerMapping根据具体的请求查找能处理这个请求的Handler。(HandlerMapping主要是处理请求和Handler方法的映射关系的)
3.HandlerMapping返回一个能够处理请求的执行链给DispatchServlet,这个链中除了包含Handler方法也包含拦截器。
4.DispatchServlet拿着执行链去找HandlerAdater执行链中的方法。
5.HandlerAdater会去执行对应的Handler方法,把数据处理转换成合适的类型然后作为方法参数传入
6.Handler方法执行完后的返回值会被HandlerAdapter转换成ModelAndView类型。由于使用了@ResponseBody注解,返回的ModelAndView会为null ,并且HandlerAdapter会把方法返回值放到响应体中。(HandlerAdater主要进行Handler方法参数和返回值的处理。)
7.返回ModelAndView给DispatchServlet。
8.因为返回的ModelAndView为null,所以不用去解析视图解析和其后面的操作。