Spring MVC 源码解析时序图Spring MVC 源码解析时序图
2021-07-19 16:43:59 0 举报
Spring MVC 源码解析时序图Spring MVC 源码解析时序图
作者其他创作
大纲/内容
InternalResourceView
9
InvokeAndHandle
InitThemeResolver()主题解析
InitHandlerExcptionResolvers异常解析处理器
Generate方法
此处RenderMergedOutPutModel()抽象方法,很多子类实现如图所示
AbstractHandlerMethodAdapter
AbstractView
exposeHelpers()
获取视图路径,使用Forward转发进行页面展示 即如下代码
4
1
NativeMethodAccessorlmpl
PrepareResponse(Request,response)对返回头进行设置
InitHandlerAdapters()处理器适配器
DoDisPatch()
ModelAndView
InvokeForRequest
MethodAccessorGenerator
InitRequestToViewNameTranslator()根据视图名称解析、匹配模板
InitViewResolvers视图解析器
调用方法
OnRefresh
IOC容器启动后开始调用
5
InitFlashMapManager()Flash映射管理器
调用方法分发请求
DoService()
GetHandlerAdapter获取处理器适配
RequestMappingHandlerAdapter
RenderMergedOutputModel模板方法,它的实现在InternalResourceView子类可根据条件自定义输出Excel,pdf等,只需要写一个继承AbstractXlsView或AbstractPdfView等父类 重写方法即可,要确保你返回的View是你自定义的View名称
HandleInternal()
InvocableHandleMethod
6
initWebApplicationContext()
ServletInvocableHandlerMethod
JstView
ProcessDispatchResult开始处理业务返回结果
Render()开始渲染视图
从IOC容器getBean()配置文件如未配置使用默认getDefaultStrategies
调用
InitHandlerMappings()解析URL和Method的关联关系,请求映射到处理器
InitServletBean()
DoInvoke()使用给定参数开始调用业务
DispatcherServlet
3
7
策略逻辑一致
Init()
调用InitStrategies()方法,初始化SpringMVC 9大策略
执行Invoke()
InitMultipartResolverMultipart类型文件上传解析
代码实现
FrameworkServlet
HTTPServletBean
InitLocaleResolver()本地化解析(多语言、国际化)
RenderMergedOutputModel(Request,response)获取map类型model对象与Request和Response一起封装 传递出去
Var1.getClassLoader().newInstance()通过reflect反射方式,执行Controller
8
ExposeHelpers()公开帮助程序作为请求属性
调用处理用户请求
MethodAccess调用generateMethod()
ExposeModelAsRequestAttributes循环将model数据放入到HttpServletRequest对象
Ha.handle()
Invoke()
2
method
判断ModelAndView是否有返回要渲染视图
InvokeHandlerMethod()获取处理请求方法,执行并返回结果视图
0 条评论
下一页