SpringMVC请求响应流程
SpringMVC九大组件
MultipartResolver
:解决文件上传的组件LocaleResolver
:国际化Locale解析组件ThemeResolver
:主题皮肤解析HandlerMapping
:处理映射器,根据url
地址找到后台的处理器HandlerAdapters
:处理器适配器(最复杂的组件)HandlerExceptionResolver
:处理器的异常解析器RequestToViewNameTranslator
:没有视图返回值的情况下,根据请求解析视图名ViewResolver
:视图解析器,根据逻辑视图的名称,结合数据返回成视图FlashMapManager
:重定向的传值组件
SpringMVC请求响应流程
- 调用其
doDispatch
方法进行Web请求的处理。 - 根据
MultipartResolver
组件,判断这次请求是否是一个文件上传请求。 - 根据
HandlerMapping
组件,根据请求的路径,找到对应的处理器调用链。 - 根据对应的处理器类型获取
HanderAdapter
组件。 - 调用
applyPreHandle
方法进行前置拦截处理。 - 通过
HanderAdapter
进行处理器方法的调用,并统一返回ModelAndiew
对象。 - 如果返回的
ModelAndiew
对象中没有视图信息,调用RequestToViewName
组件,解析出一个全新的视图名出来。 - 调用
applyPostHandle
方法进行后置拦截处理。 - 运行结果处理
- 如果之前捕捉到了异常,进行异常处理。调用处理器异常解析器组件,解析出
ModelAndView
,继续9.2步骤 - 进行页面渲染
- 借助
LocaleResolver
获取区域语言信息。 - 借助视图解析器组件,根据逻辑视图的名字,解析出
View
(视图名称)。 - 调用
view
的render
方法进行页面的渲染,会根据Model
数据进行转化或者重定向。
- 借助
- 如果之前捕捉到了异常,进行异常处理。调用处理器异常解析器组件,解析出
- 调用
triggerAfterCompletion
拦截器方法。
注:如果在2-8之间抛出了异常,将记录异常的信息。
本文来自博客园,作者:星空探险家,转载请注明原文链接:https://www.cnblogs.com/PuppetLazy/p/17840934.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了