DispatcherServlet源码分析
首先,我们知道DispatcherServlet是前端控制器,是用来处理请求的,同时他也是一个Servlet,在初始化时,也是做了相关工作的。在Servlet调用init(),方法方法是,会回调DispatcherServlet的onRefresh方法,做相关初始化工作,比如:初始化本地化解析器,Handler映射器,Handler适配器等,为后面处理请求时,做准备工作。Servlet在接收请求时,首先调用service方法,然后回调DispatcherServlet的doDispatch方法,做如下图处理:
这里主要有2个接口:
HandlerMapping接口:
其实现类:BeanNameUrlHandlerMapping ControllerBeanNameHandlerMapping ControllerClassNameHandlerMapping RequestMappingHandlerMapping SimpleUrlHandlerMapping,其中RequestMappingHandlerMapping就是我们常用的。
HandlerAdapter接口:
其实现类:HttpRequestHandlerAdapter RequestMappingHandlerAdapter SimpleControllerHandlerAdapter SimpleServletHandlerAdapter,其中HttpRequestHandlerAdapter就是我们常用的。