
3、HandlerAdapter:处理器适配器,使用了适配器模式,将处理器映射器找到的处理器对象和处理方式适配成DispatchServlet所应该的请求处理方式(目标接口),这样DispatchServlet调用统一的请求处置接口完成请求处理,处理器适配器HandlerAdapter的用途就是将我们自定义的后端控制器Controller适配成DispatchServlet需要的接口。
根据Spring MVC实现后端控制器的方法不同,则对应的适配器要不同,常见的HandlerAdapter有:
a、SimpleControllerHandlerAdapter:要求Controller控制器实现Controller接口,以及实现接口中的方式handleRequest()方法来处理请求,通常和处理映射器BeanNameUrlHandlerMapping或者SimpleUrlHandlerMapping联合使用。

b、DefaultAnnotationHandlerAdapter:适配使用注解@Controller和@RequestMapping标识的处理器,spring3.1之前spring2.5后使用,和DefaultAnnotationHandlerMapping联合使用。
c、RequestMappingHandlerAdapter:适配使用注解@Controller和@RequestMapping标识的处理器,spring3.1后使用,替换了DefaultAnnotationHandlerAdapter,和RequestMappingHandler Mapping联合使用。
注意:handlerAdapter接口中定义了几个方法,有详细处理器适配器来实现:

boolean supports(Object handler);判断该适配器能否支持适配当前的处理器handler
ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object handler)throws Exception;DispatchServlet处理请求所应该的目标接口,在其方式推动中完成适配,来处理及准备ch处理器方法中的参数及Annotationspring请求流程,最后读取处理器的选定方式.
DispatchServlet遍历HandlerMapping获取HandlerExecutionChain对象后,遍历spring容器中的所有HandlerAdapter对象,查看当前处理器适配器对象能否还能支持适配找到的处理器对象Controller,能则读取适配器的接口handle()方法处置请求,处理前有的先执行拦截处理

DispatchServlet请求处置方式doDispatch()方法中实现:
getHandlerAdapter()方法实现:

4、ViewResolver:视图解析器,请求处理完后,DispatchServlet会得到请求处理结果(包括建模数据和逻辑视图),DispatchServlet会找到Spring容器中的ViewResolver对象将逻辑视图解析成物理页面文件。注意针对使用了@ResponseBody注解的方式,DispatchServlet会使用适合的消息转换器将请求处理结果转化后返回给前台。
5、DispatchServlet找到物理视图文件后spring请求流程,DispatchServlet使用视口模板引擎将建模数据渲染到物理视图页面中,最后DispatchServlet将渲染后的页面返回给前台,请求结束。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-120191-1.html