一、基本概念
SpringMVC中,满足条件的请求进入到负责请求分发的DispatcherServlet,DispatcherServlet根据请求url到控制器的映射(HandlerMapping中保存),
HandlerMapping最终返回HandlerExecutionChain,其中包含了具体的处理对象handler(也即我们编程时写的controller)以及一系列的拦截器interceptors,
此时DispatcherServlet会根据返回的HandlerExecutionChain中的handler找到支持这一处理器类型的适配器(handlerAdapter),
在处理器适配器中最终会去调用控制器的请求响应方法并返回结果视图(ModelAndView),得到结果视图后,通过render方法完成结果的显示。
二、核心类
1、DispatcherServlet
继承体系:
DispatcherServlet--->FrameworkServlet--->HttpServletBean--->HttpServlet
2、MappingRegistry
key:{[/userGroup.shtml],methods=[POST]}
value:public com.JsonResult controller.UserGroupController.createUserGroup(,java.lang.String,java.lang.String,java.lang.String)
urlLookup-- 保存URL path 和mapping的对应
key:/userGroup.shtml
value:[{[/userGroup.shtml],methods=[GET]}, {[/userGroup.shtml],methods=[POST]}]
3、AbstractHandlerMapping
4、HandlerExecutionChain
5、HandlerAdapter
6、ModelAndView
三、路径寻找
未完待续
四、参数注入
未完待续
五、路径返回
未完待续
SpringMVC中,满足条件的请求进入到负责请求分发的DispatcherServlet,DispatcherServlet根据请求url到控制器的映射(HandlerMapping中保存),
HandlerMapping最终返回HandlerExecutionChain,其中包含了具体的处理对象handler(也即我们编程时写的controller)以及一系列的拦截器interceptors,
此时DispatcherServlet会根据返回的HandlerExecutionChain中的handler找到支持这一处理器类型的适配器(handlerAdapter),
在处理器适配器中最终会去调用控制器的请求响应方法并返回结果视图(ModelAndView),得到结果视图后,通过render方法完成结果的显示。
二、核心类
1、DispatcherServlet
继承体系:
DispatcherServlet--->FrameworkServlet--->HttpServletBean--->HttpServlet
2、MappingRegistry
类源码:
/**
* A registry that maintains all mappings to handler methods, exposing methods
* to perform lookups and providing concurrent access.
*
* <p>Package-private for testing purposes.
*/
class MappingRegistry {
private final Map<T, MappingRegistration<T>> registry = new HashMap<T, MappingRegistration<T>>();
private final Map<T, HandlerMethod> mappingLookup = new LinkedHashMap<T, HandlerMethod>();
private final MultiValueMap<String, T> urlLookup = new LinkedMultiValueMap<String, T>();
private final Map<String, List<HandlerMethod>> nameLookup =
new ConcurrentHashMap<String, List<HandlerMethod>>();
private final Map<HandlerMethod, CorsConfiguration> corsLookup =
new ConcurrentHashMap<HandlerMethod, CorsConfiguration>();
private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
核心数据结构:
mappingLookup---保存all mappings and handler methodskey:{[/userGroup.shtml],methods=[POST]}
value:public com.JsonResult controller.UserGroupController.createUserGroup(,java.lang.String,java.lang.String,java.lang.String)
urlLookup-- 保存URL path 和mapping的对应
key:/userGroup.shtml
value:[{[/userGroup.shtml],methods=[GET]}, {[/userGroup.shtml],methods=[POST]}]
3、AbstractHandlerMapping
4、HandlerExecutionChain
5、HandlerAdapter
6、ModelAndView
三、路径寻找
未完待续
四、参数注入
未完待续
五、路径返回
未完待续