SpringMVC关于handlerMapping和handlerAdapter

1.概念模型HandlerExecutionChain

HandlerExecutionChain可以被想象为一个容器,它包含一个Handler,和一组特定顺序的HandlerInterceptor。

  • Handler就是一个被设计为处理目标请求,输出响应数据的处理逻辑
  • 而一个HandlerInterceptor则是类似于AOP中切面的一种概念逻辑。在Spring MVC初始化过程中,符合某种特征的HandlerInterceptor会按特定顺序包裹到某些Handler外面,形成一个个HandlerExecutionChain,待DispatcherServlet用于请求处理

小结

  • HandlerExecutionChain所持有的对象
    • Handler——处理请求的目标Handler
    • HandlerInterceptor——0个或多个Handler处理请求的前置/后置/完成时拦截处理器
  • HandlerExecutionChain所提供的重要方法
    • applyPreHandle——前置拦截处理器
    • applyPostHandle——后置拦截处理器
    • triggerAfterCompletion——完成时拦截处理器

2.HandlerMapping概念

HandlerMapping的作用是根据当前请求找到对应的Handler,并将Handler(执行程序)与一堆的HandlerInteceptor(拦截器)封装到HnadlerExecutionChain对象中,在HandlerMapping接口的内部只有一个方法:

HandlerEecutionChain getHandler(HttpSerletRequest request);

HandlerMapping是由DispatcherServlet调用,DispatcherServlet会从容器中取出所有HandlerMapping实例并遍历,让HandlerMapping实例根据自己实现类的方式去尝试查找Handler

3.HandlerAdapter概念

HandlerAdapter的作用:因为Spring MVC中的Handler可以有多种实现形式,但是Servlet需要处理方法的结构却是固定的,都是以request和response作为方法入参,那么如何让固定参数的Servlet处理方法调用灵活的Handler来进行处理呢,这就需要HandlerAdapter来做适配

需要注意的是:Spring MVC的Handler(Controller接口,HttpRequestHandler,@RequestMapping,Servlet)有多种表现形式,不同的Handler,处理请求的方式是不一样的,注解@RequestMapping方法使用的是用方法处理请求,而实现Controller接口和HttpRequestHandler接口方式使用的是一个类,而适配器模式就能模糊掉具体的实现,从而就能提供统一访问接口,所以就需要用到适配器了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值