1.客户端向服务端发送一个请求(URL),首先出来处理的组件是SpringMV中的前端控制器(DispatcherServlet:主要负责接收请求和将请求Request传递给其他相应的组件)
1.1 DispatcherServlet又是怎样处理的呢?Dispatcher的核心组件是HandMapping,这个核心组件的核心处理类RequestMappingHandMapping会找出Spring容器中所有的被@Controller注解修饰的类以及@RequestMapping注解标识的类和方法,遍历所有的HandMapping集合
1.2 DispatherServlet 会找到对应的HandlerMapping,并得到HandExecutionChain,这个HandlerExecutionChan包括一系列的过滤器和拦截器,HandInteceptor拦截调用preHandle方法,
1.3使用HandExecutionChain中的Hander遍历HandlerAdapter集合,找到支持Handler的HandlerAdapter(这个HandlerAdapter的核心实现类是RequestMappingHandlerAdapter,RequestMappingHandlerAdapter有两个核心的功能,第一个功能是解析方法的参数(HandlerMethoderArgumentResolver,它的实现类之一RequestParamMethodArgumentResolver(处理@RequestParam注释注解的参数)),第二个是处理方法的返回值,HandlerMethoderReturnValue,他的实现类:ModelAndViewMethodReturnValueHandle(处理返回值类型为ModelAndView类型的方法))
1.4.使用HandlerAdapter拿到ModelAndView
1.5 前面四个步骤都可能出现异常,如果出现异常会交给HandlerExceptionResolver策略处理
1.6.根据ModelAndView使用viewResolver进行解析
1.7.viewResolver进行解析得到view
1.8.得到json,jsp,xml又经过一系列的HandlerInteceptor拦截,调用afterCompletion方法,完成请求的响应