04-SpringMVC执行过程
2023-03-04 22:25:08 1 举报
sprinmvc
作者其他创作
大纲/内容
6、返回ModelAndView
afterPropertiesSet
继承
handleInternal
DispatcherServlet
initServletBean
invokeAndHandle
根据返回的值不同,使用对应的转换器
7、返回ModelAndView
put或者add
否
返回的modelAndView对象不为空mv != null && !mv.wasCleared()
拿到handler实例
processCandidateBean
getMethodArgumentValues
10、把model填充到view中,渲染视图
增加拦截器
通过反射执行方法
如果返回的是对象或字符串等,这里可以找到对应的转换器
是
初始化contextinitWebApplicationContext
isHandler
onRefresh
MappingRegistry
需要modelandview进行渲染
执行适配器的handle方法
循环所有候选bean
invokeForRequest
9、返回viewd对象
InitializingBean
Handler(处理器)又名Controller
客户端
initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandlerMappings(context); initHandlerAdapters(context); initHandlerExceptionResolvers(context); initRequestToViewNameTranslator(context); initViewResolvers(context); initFlashMapManager(context);
doDispatch
detectHandlerMethods
@Controller注解类映射方法注册
处理器初始化,从spring容器中获取已经注册的handleradaptor、handlermapping等
register
spring容器启动
为方法创建requesmappinginfogetMappingForMethod
5、执行处理器方法
ViewResolver(视图解析器)
View(视图)
HandlerExecutorChain|-HandlerInterceptor|-HandlerInterceptor|-Handler
getHandler
HandlerAdaptor处理器适配器
获取HandlerExecutionChain执行链
执行拦截器后置方法
不为空比如实现了Controller接口
RequestMappingHandlerMapping重写类父类方法
4、处理器适配
8、视图解析
2、查找处理器
执行初始化方法init
render
11、返回响应
3、返回处理器
initStrategies
ServletInvocableHandlerMethod
执行拦截器前置方法
执行并返回结果doInvoke(args)
浏览器访问
获取handler适配器
执行初始化方法
HttpServlet执行init方法
AbstractHandlerMethodMapping
getHandlerAdapter(mappedHandler.getHandler())
HttpServletBean
进入下一次循环
AbstractGenericHttpMessageConverterAbstractHttpMessageConverterAbstractJackson2HttpMessageConverterAbstractJaxb2HttpMessageConverterAbstractJsonHttpMessageConverterAbstractWireFeedHttpMessageConverterAbstractXmlHttpMessageConverterAllEncompassingFormHttpMessageConverterAtomFeedHttpMessageConverterBufferedImageHttpMessageConverterByteArrayHttpMessageConverterFormHttpMessageConverterGenericHttpMessageConverterGsonHttpMessageConverterJaxb2CollectionHttpMessageConverterJaxb2RootElementHttpMessageConverterJsonbHttpMessageConverterKotlinSerializationJsonHttpMessageConverterMappingJackson2CborHttpMessageConverterMappingJackson2HttpMessageConverterMappingJackson2SmileHttpMessageConverterMappingJackson2XmlHttpMessageConverterMarshallingHttpMessageConverterObjectToStringHttpMessageConverterProtobufHttpMessageConverterProtobufJsonFormatHttpMessageConverterResourceHttpMessageConverterResourceRegionHttpMessageConverterRssChannelHttpMessageConverterSourceHttpMessageConverterStringHttpMessageConverter
RequestMappingHandlerAdapter
跳过
进行注册registerHandlerMethod
getMappingForMethod
getHandlerInternal(request)
isHandler是否带有Controller或RequestMapping注解
第一次http请求
FrameworkServlet
后续controller请求从这里获取MappingRegistry mappingRegistry = new MappingRegistry()
HandlerMapping处理器映射
为空执行拦截器完成后方法
0 条评论
下一页