SpringMVC原理
博客园超级干货
https://www.cnblogs.com/fangjian0423/p/springMVC-directory-summary.html
原理(Spring Mvc 4.02版本)
程序启动的时候会DispatcherServlet监听触发初始化:比如HandlerMappings映射、HandlerAdapters适配器、initHandlerExceptionResolvers、ViewResolvers解析器等等
- 在容器初始化时会对所有进行过静态文件配置,或者@RequestMapping注解配置的HashMap集合,
urlmap handlerMethods,实现String url –> RequestMappingInfo –> HandlerMethodprivate final Map<T, HandlerMethod> handlerMethods = new LinkedHashMap<T, HandlerMethod>();private final MultiValueMap<String, T> urlMap = new LinkedMultiValueMap<String, T>();T为RequestMappingInfo。
请求流程
request 到DS,DS去HandlerMapping查找对应的HandlerMapping,再去HandlerAdapter中调用Handler返回一个ModelAndView到DS,DS再调用ViewResolver去解析页面,最后渲染返回给用户。
核心类
DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。
HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。
ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。
|