【MVC】
入口:web.xml
web.xml中<servlet/>
中的<servlet-class/>
配置org.springframework.web.servlet.DispatcherServlet
DispatcherServlet extends
FrameworkServlet extends
HttpServletBean extends
HttpServlet
1、初始化
1-1:入口:HttpServletBean.init()–>FrameworkServlet.initServletBean()–>FrameworkServlet.initWebApplicationContext()–>configureAndRefreshWebApplicationContext()
初始化
1-2:configureAndRefreshWebApplicationContext()–>AbstractApplicationContext.refresh()–>FrameworkServlet.onRefresh(wac)
这个方法里面调用了AbatractApplication的refresh();模板方法,规定IOC初始化基本流程
1-3:FrameworkServlet.onRefresh(wac)–>DispatcherServlet.initStrategies()
初始化九大组件
2、运行
2-1:入口:DispatcherServlet.doService()–>doDispatch()–>getHandler()
从AbstractHandlerMapping.getHandler()中获取Handler,返回HandlerExecutionChain责任链,该对象封装了handler和interceptors
2-2:DispatcherServlet.getHandlerAdapter(mappedHandler.getHandler());
根据Handler获取HandlerAdapter
2-3:AbstractHandlerMethodAdapter.handle()–>invokeHandlerMethod()–>getModelAndView()
HandlerAdapter处理请求,返回ModelAndView
2-4:DispatcherServlet.processDispatchResult()–>DispatcherServlet.render()
–>viewResolver.resolveViewName()视图解析,返回View对象
–>view.render()通过response输出到浏览器
运行阶段可以按照从请求都响应的流程回答
1、请求到DispatchServlet(中央处理器)
2、通过HandlerMapping(映射处理器)返回HandlerExecutionChain(责任链)
3、通过HandlerAdapter(适配处理器)执行Handler,并返回ModelAndView
4、通过ViewResolver(视图解析器)返回View,然后进行视图渲染