SpringMVC请求处理流程
2021-04-13 10:58:26 15 举报
SpringMVC请求处理流程主要包括以下几个步骤:首先,客户端发起一个HTTP请求到DispatcherServlet;然后,DispatcherServlet根据请求信息调用HandlerMapping处理器映射器,找到处理该请求的Controller;接着,Controller处理请求并返回ModelAndView对象;最后,DispatcherServlet将ModelAndView对象传给ViewReslover视图解析器,找到对应的视图进行渲染,并将渲染结果返回给客户端。在整个过程中,SpringMVC还提供了拦截器、表单验证、国际化等功能,以满足不同场景的需求。
作者其他创作
大纲/内容
1.DispacherServlet创建对象后,Tomcat调用初始化回调钩initServletBean()2.最终容器启动完成,Spring发送事件,回调DispatcherServlet的onRefresh()3.onRefresh初始化九大组件4.handlerMapping初始化 4.1 创建所有配置中指定的handlerMapping对象 4.2 启动了createBean来创建HandlerMapping的流程 4.3 RequestMappingHandlerMaping对象创建完成以后开始了初始化流程 4.4 因为RequestMappingHandlerMapping实现了InitializingBean 4.5 调用了RequestMappingHandlerMapping的初始化方法afterPropertiesSet 4.6 拿到Web容器 (子容器) 中的所有组件,挨个处理,判断是否有@Controller或者@RequestMapping 4.7 把分析到的RequestMapping信息放到HandlerMapping的registry中
MeiNvView
MeinvViewResolver
/mvc_test/hello
把所有数据放在session中个,重定向到下一个位置也能拿到response.sendRedirect(url);
得到视图View视图自己可以随便决定数据改怎么整出去
handler();实现逻辑
异常处理器
HandlerMapping如何有数据的
其他情况
寻找适配器HandlerAdapter
所有组件可能都会用的功能,可以用后置处理器BeanPostProcessor来做到单组件增强的,最好利用生命周期InitalizingBean来做
HandlerMapping所有handlerMapping尝试找映射一定保存了非常多的url映射关系
调用渲染 view.render
返回ModelAndView
处理页面(视图解析器)负责根据返回值index.jsp
HandlerAdapter所有的HandlerAdapter判断自己能否搞定这种方式
异常
HandlerAdapter(超级反射工具)
/hello 注解方法版的
数据校验
返回值封装
RedirectView重定向
请求
目标方法执行过程(适配器代为执行)
@ResponseBody的会在这一步直接写出去
meinv:
目标方法
/a -> AServlet/b -> BServelt/c ->CServlet
render
/abc_test
文件上传预处理
/ -> DispatcherServlet
视图解析器
SpringMVC请求处理流程
Controllerreturn \"index.jsp\"逻辑视图(视图名)
InternalResourceViewResolver
真正的视图View
SpringMVC在底层使用视图解析器把我们返回的字符串(index.jsp) 解析成真正的View对象进行渲染
所有解析器尝试处理异常
redirect:
适配过程
InternalResouceView
以下都是封装好的返回值(ModelAndView处理环节
HandlerInterceptor拦截器后置拦截过程postHandle
保证每个url注册进来,能不能处理我不管
处理结果(ModleAndVIew)
DispacherServlet(控制中心)
链: 目标方法 +所有拦截器
寻找映射处理链HandlerMapping
页面跳转处理
利用InitialzingBean生命周期
以后发生了异常,先看@ExceptionHandler能不能处理
Tomcat
处理异常(异常解析器)返回ModelAndView下面人继续
视觉效果
HandlerInterceptor拦截器完成拦截
异常处理
HandlerInterceptor拦截器前置拦截过程preHandle
supports: 动态策略的体现
请求结果处理
Spring的HandlerMappiner与HandlerAdapter的交互图
转化
初始化的默认配置
线程数据共享
HandlerInterceptor拦截器拦截完成处理
HandlerInterceptor拦截器完成拦截afterCompletion
视图解析器ViewReslover
负责解析出视图对象,完成这个转化过程
InternalResourceView转发
forward:
请求处理流程 doDispacher()
执行业务
参数确定
异常解析器
0 条评论
下一页