springMVC--HandlerAdapter
来源:互联网 发布:申报数据库免费吗 编辑:程序博客网 时间:2024/05/16 12:12
HandlerAdapter的接口中定义了三个方法:
(1)boolean supports(Object handler); 判断是否支持传入的Handler
(2)ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) 用来使用Handler处理请求
(3)long getLastModified(HttpServletRequest request, Object handler); 用来获取资料的Last-Modified值。
接口源码如下:
public interface HandlerAdapter { boolean supports(Object handler); ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; long getLastModified(HttpServletRequest request, Object handler); }HandlerAdapter的执行操作,其执行过程在DispatcherServlet的doDispatch中,执行流程如下:
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { ........ try { try { //获取合适的HandlerAdapter实现类 HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); ........ if (isGet || "HEAD".equals(method)) { long lastModified = ha.getLastModified(request, mappedHandler.getHandler()); } ........ //执行真正的请求操作 mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); ........ }getHandlerAdapter的操作就是选择合适的HandlerAdapter来执行,设计模式中的适配器模式,handlerAdapters中的内容就是所有的HandlerAdapter的实现类。
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException { for (HandlerAdapter ha : this.handlerAdapters) { if (logger.isTraceEnabled()) { logger.trace("Testing handler adapter [" + ha + "]"); } if (ha.supports(handler)) { return ha; } } throw new ServletException("No adapter for handler [" + handler + "]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler"); }
这样就完成了Handler的真正调用过程,最终调用过程是返回一个ModelAndView对象。
阅读全文
0 0
- springMVC--HandlerAdapter
- SpringMVC中的HandlerAdapter
- springMVC (三) HandlerAdapter
- SpringMVC handlerMapping和handlerAdapter
- SpringMVC之HandlerAdapter解析
- SpringMVC之HandlerAdapter解析
- SpringMVC-HandlerAdapter简介
- SpringMVC 流程(3)-- HandlerAdapter
- SpringMVC源码解析- HandlerAdapter初始化
- 11.SpringMVC 请求处理 - HandlerAdapter
- SpringMVC之HandlerMapping和HandlerAdapter
- SpringMVC之 HandlerAdapter和handlerMapping
- SpringMVC学习(三)--handlerMapping和handlerAdapter
- springmvc Handler HandlerMapping HandlerAdapter的配置方式
- SpringMVC源码分析 之 HandlerMapping和HandlerAdapter
- 第四章 SpringMVC之HandlerAdapter解析
- SpringMVC源码 HandlerMapping和HandlerAdapter(1)
- SpringMVC源码 HandlerMapping和HandlerAdapter(2)
- Android——蓝牙错误状态码大全
- XML的解析 DOM解析
- redis-入门命令笔记
- [Python/自动化运维] 运用Python进行Nginx日志状态码过滤
- java 数组默认初始化
- springMVC--HandlerAdapter
- 286. Walls and Gates
- 文章标题
- 使用nexus-3.0.2-02-win64搭建自己的Maven nexus私服
- 内容loading加载后高度变化
- tostring()、size_t
- 让Irrlicht鬼火引擎显示中文
- 参考coupon开发cardcoupon-3
- Android App加固原理分析