SpringMVC中请求分发的设计

一、SpringMVC中请求分发的组件

DispatcherServlet是SpringMVC的核心组件,请求分发是其重要任务。

在DispatcherServlet的请求分发中,采用了适配器模式进行,通过HandlerMapping和HandlerAdapter实现。

SpringMVC中请求分发的设计

HandlerMapping接口继承体系:

SpringMVC中请求分发的设计

HandlerAdapter接口继承体系:

SpringMVC中请求分发的设计

在DispatcherServlet初始化时,将初始化所有HandlerMapping和HandlerAdapter。

SpringMVC中请求分发的设计

SpringMVC中请求分发的设计

SpringMVC中请求分发的设计

 

二、SpringMVC中请求分发

SpringMVC的请求分发是在其doDispatch()方法中完成的

SpringMVC中请求分发的设计

通过HandlerMapping的getHandler()方法得到Handler

SpringMVC中请求分发的设计

通过HandlerAdapter的supports()方法选出适合的HandlerAdapter

SpringMVC中请求分发的设计

通过HandlerAdapter的handle()方法执行对应的Handler(对应Contoller中的方每个法)

AbstractHandlerMethodAdapter

SpringMVC中请求分发的设计

RequestMappingHandlerAdapter

SpringMVC中请求分发的设计

RequestMappingHandlerAdapter

SpringMVC中请求分发的设计