SpringMVC之HandlerAdapter的作用

HandlerAdapter:处理器适配器,作用就是调用具体的方法处理用户发来的请求。当 handlerMapping 获取到执行请求的
Controller 时,DispatcherServlet 会根据 Controller 对应的 Controller 类型来调用相应的
HandlerAdapter 来进行处理。适配器涉及到的设计模式:适配器模式。

1. HandlerAdapter的注册

DispatcherServlet会根据配置文件信息注册HandlerAdapter,如果在配置文件中没有配置,那么DispatcherServlet会获取 HandlerAdapter的默认配置,如果是读取默认配置的话,DispatcherServlet 会读取 DispatcherServlet.properties 文件, 该文件中配置了三种 HandlerAdapter:

HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter、AnnotationMethodHandlerAdapter

DispatcherServlet将这三个 HandlerAdapter 对象存储到它的handlerAdapters这个集合属性中,这样就完成了 HandlerAdapter的注册。

2. HandlerAdapter 的执行

DispatcherServlet会根据handlerMapping传过来的controller与已经注册好了的HandlerAdapter相匹配,看哪一种HandlerAdapter是支持该controller类型的,如果找到了其中一种HandlerAdapter是支持传过来的controller类型,那么该HandlerAdapter会调用自己的handle方法,handle方法运用Java反射机制执行controller的具体方法来获得ModelAndView,例如SimpleControllerHandlerAdapter是支持实现了 controller接口的控制器,如果自己写的控制器实现了controller接口,那SimpleControllerHandlerAdapter 就会去执行自己写控制器中的具体方法来完成请求。通过查看SpringMVC源码,发现处理器不只有 Controller这一种。还有HttpRequestHandler,Servlet等处理器。

下面来介绍一下几种适配器对应的处理器以及这些处理器的作用:

  • AnnotationMethodHandlerAdapter:适配注解类处理器,也就是常用的@Controller注解
  • HttpRequestHandlerAdapter:适配静态资源处理器,静态资源处理器就是实现了HttpRequestHandler
    接口的处理器,这类处理器的作用是处理通过SpringMVC来访问的静态资源的请求。
  • impleControllerHandlerAdapter:Controller处理适配器,适配实现了Controller接口或
    Controller接口子类的处理器,比如我们经常自己写的Controller 来继承MultiActionController。
  • SimpleServletHandlerAdapter:Servlet处理适配器,适配实现了Servlet接口或Servlet的子类的处理器,我们不仅可以在web.xml里面配置Servlet,其实也可以用SpringMVC来配置Servlet,不过这个适配器很少用到,而且SpringMVC 默认的适配器是前面三种。

SpringMVC三种默认处理器适配器正好对应了控制器的三种实现方式,可以参考我的另一篇博客:SpringMVC中Controller控制器的三种实现方式

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值