Spring MVC 源码解析时序图
2021-07-20 18:55:26 举报
登录查看完整内容
相似推荐
查看更多
Spring Transaction 源码解析时序图
Spring Boot 缓存源码解析时序图
Spring AOP 源码解析时序图
Spring 源码解析
Spring 源码
SpringBoot源码解析
spring mvc 源码解析
Spring MVC学习指南
spring源码解析
Spring 依赖注入(DI) 源码解析时序图
Spring MVC 源码解析时序图
作者其他创作
大纲/内容
获取视图路径,使用最基础的 forward() 转发的方式,进行页面展示,即如下代码的方式↓↓↓↓
Spring MVC 源码解析时序图
1
3
这个renderMergedOutputModel是一个模板方法,它的实现在InternalResourceView子类中。(此处你也可以根据情况来自定以你的输出,比如说输出Excel,Pdf 等,只需要写一个继承 AbstractXlsView或AbstractPdfView 等相应父类,重写其方法即可)注意⚠️:这种情况下,你要确保你返回的 view 是你自定义的 view 名称提示:我们公司使用的导出大数据 xls 数据,就是使用的这种方式,这种导出方式可以做到通用模式
代码实现如图所示
initFlashMapManager()Flash映射管理器
如果时序图对您有用,请在右上角给点个赞吧。5个赞我能多一张文件,支持作者继续画出更好的时序图给大家,谢谢大家支持配套博客介绍:请搜索CSDN 扛麻袋的少年
实则调用子类的 onRefresh() 方法
initViewResolvers()视图解析器
initLocaleResolver()本地化解析(多语言、国际化)
2
调用doDispatch()方法,开始分发请求
doService()
9
AbstractHandlerMethodAdapter
执行 invoke() 方法
业务执行完成,最终返回一个 ModelAndView 对象
getHandlerAdapter获取处理器适配器后,调用handle()方法开始处理用户请求
调用 generate() 方法
这三个策略执行方法逻辑都一样
initThemeResolver()主题解析
invokeForRequest
此处renderMergedOutputModel() 是一个抽象方法,它有很多子类的实现,如图所示
InternalResourceView
exposeModelAsRequestAttributes()方法:for 循环将 model 模型数据一个一个的放入到HttpServletRequest对象中
FrameworkServlet
ha.handle()
initHandlerAdapters()处理器适配器
2020.08.22,过几天后将再次对Spring源码的进行深抛
ModelAndView
exposeHelpers()span style=\"font-size: inherit;\
调用 initStrategies() 方法,初始化SpringMVC九大策略
ServletInvocableHandlerMethod
Did the handler return a view to render?判断 ModelAndView 是否有返回要渲染的视图
7
实则调用handleInternal()方法
8
DispatcherServlet
doInvoke()使用给定的参数值,开始调用业务处理方法
AbstractView
执行 processDispatchResult() 方法,开始处理业务返回的结果
initMultipartResolver()multipart类型文件上传解析
调用子类的renderMergedOutputModel()方法
initServletBean()
var1.getClassLoader()).newInstance()最终通过 reflect 反射的方式,执行 Controller
initHandlerExceptionResolvers()异常解析处理器
request.getRequestDispatcher(\"视图view路径\
RequestMappingHandlerAdapter
initWebApplicationContext()
调用方法
NativeMethodAccessorImpl
InvocableHandlerMethod
4
扛麻袋的少年 2020-03-13
①从IOC容器 getBean()(因为我们会在配置文件中配置)②未配置的话,使用默认 getDefaultStrategies()
其他 6 个策略不常用,此处不做介绍,不过执行方法逻辑也和其他3个都类似
6
exposeHelpers()
initRequestToViewNameTranslator()根据视图名称解析,匹配模板
onRefresh()
5
HttpServletBean
JstlView
调用onRefresh()方法
init()
使用 MethodAccess 方式,调用generateMethod()方法
doDispatch()
(只要是IOC容器启动之后,就会去调用onRefresh() 方法)
调用 render() 方法开始渲染视图
render()
invoke()
调用 JstlView 中的 exposeHelpers()方法,为 JSP 中使用 EL 表达式做一系列操作,这样我们才能在 JSP 页面中通过 EL 表达式拿到属性值
Method
invokeAndHandle
MethodAccessorGenerator
0 条评论
回复 删除
下一页