servlet与jsp执行过程
spring mvc本质上是对其进行封装简化了开发流程。易用性、程序逻辑结构更清晰
-
基于注解的URL映谢
-
http表单参数转换
-
全局统一异常处理
-
拦截器的实现
-
多视图控制器
基于DispatchServlet来设计一个mvc框架执行流程
dispatchServlet核心类结构
springmvc上下文初始过程
-
webApplicationContext 初始过程
-
handlerMappings 初始过程
-
handlerExceptionResolvers 初始过程
-
viewResolvers 初始过程
-
handleAdapters 初始过程
MVC上下文即xmlWebApplicationContext,依托DispatchServlet 的和contextConfigLocation进行创建和初始化,最后对mvc 进策略初始化。
-
创建DispatchServlet
-
initServletBean
-
createWebAppl icationContext
-
createBeanFactory
-
oadBeanDefinitions(contextConfigLocation)
-
registerBeanDefinition
IOC加载完比
-
initStrategies (初始化mvc 环境)
-
initHandlerMappings (初始化 映谢配置)
-
initHandlerAdapters(初始化适配器)
-
initHandlerExcepti onResol vers
-
initViewResolvers
request请求过程
-
调用doDispatch()
-
遍历handlerMappings 与request 获取一个执行链 getHandl er()
-
遍历handleAdapters 与 handle 获取一个handle 适配器
-
通过执行链去调用拦截器当中的 preHandle() 方法 ,进行预处理。
-
基于handle 适配器 去调用handle 方法,返回 modelAndView
-
通过执行链 去调用拦截器当中的 PostHandle() 方法 ,进行拦截处理。
-
processDispatchResult()
-
正常:调用render()进行视图解析
-
1 基于 遍历 viewResol vers 工与 viewname 获取View
-
2 调用view.render() 进行视图解析和返回,设置model 至request
-
异常:遍历handlerExceptionResolvers 调用resolveExcepti on(),返回mv,最后跳转至异常 mv
HandlerMapping实现类结构
-
BeanNameUrlHandlerMapping: 基于ioc name 中已/开头的Bean时行 注册至映谢.
-
SimpleUrlHandlerMapping:基于手动配置url与control映谢
-
RequestMappingHandlerMapping:基于注解方法配置对应映谢
HandlerAdapter 实现类结构图
ViewResolver 实现类图
推荐阅读
本公众号会不定期给大家发福利,包括学习资源等,敬请期待吧!
推送内容如果现在工作用不上,可以先转发朋友圈或收藏,用的时候方便找。
另外欢迎公众号回复 微信 ,添加微信好友,互相学习交流。