HandlerMapping是什么,在那个jar包
HandlerMapping在Spring MVC框架的jar包下面,他是处理映射器,为用户发送的请求找到合适的Handler Adapter,它将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,同时通过这种策略模式,很容易添加新的映射策略。SpringMVC在请求到handler处理器的分发这步就是通过HandlerMapping模块解决的,handlerMapping还处理拦截器,同时Spring MVC也提供了一系列HandlerMapping的实现,根据一定的规则选择controller。
HandlerMapping是SpringMVC处理请求过程中的一个重要组件,在SpringMVC启动时对容器中的HandlerMapping进行初始化,初始化的位置在DispatcherServlet的onRefresh()方法中。
HandlerMapping是接口,Spring MVC中有很多的实现类,具体入下图:
AbstractHandlerMapping是HandlerMapping的最顶层抽象实现,在AbstractHandlerMapping中定义了HandlerMapping的整体结构,子类只需要通过默认方法提供初始值或具体的算法即可。
具体类的作用如下:
1. AbstractHandlerMapping 准备上下文环境;提供getHandlerInternal钩子;封装拦截器到HandlerExecutionChain
2. AbstractUrlHandlerMapping 实现注册handler的方法供子类使用;实现getHandlerInternal,根据子类初始化的配置信息,查找handler
3. AbstractDetectingUrlHandlerMapping 扫描应用下的Object,迭代后提供钩子方法determineUrlsForHandler由子类决定如何过滤
4. AbstractControllerUrlHandlerMapping 实现determineUrlsForHandler,添加过滤排除的handler操作(配置文件配置),预留钩子方法buildUrlsForHandler给子类实现;同时判断controller的子类
5. ControllerBeanNameHandlerMapping 根据bean name生成url
ControllerClassNameHandlerMapping根据class name生成url
HandlerMapping接口定义如下:
public interface HandlerMapping { HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception; }
它根据request返回HandlerExecutionChain
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。