当前位置: 首页 > article >正文

Spring MVC 处理请求

Servlet初始化

         DispatcherServlet( 前端控制器 ) Spring MVC中最核心的一个类, 它负责请求的行为流转, 接收请求、响应结果, 相当于转发器  。 那么在Servlet的初始化阶段,会调用 init() 方法进行各个组件的初始化操作,该方法 由其父类HttpServletBean负责实现 的.
        
初始化MVC各个组件
HandlerMapping(处理程序映射器)  根据请求的 URL 来查找 Handler
HandlerAdapter(处理程序适配器) 执行Handler .
Handler(处理器 )  处理业务逻辑的 Java 类(我们自己写的 Controller 类)。
ViewResolver(视图解析器)  进行视图的解析,根据视图逻辑名将 ModelAndView 解析成真正的视图( view
View(视图)  View 是一个接口, 它的实现类支持不同的视图类型,如 jsp,freemarker, pdf 等。
MultipartResolver   处理文件上传功能
LocaleResolver   国际化多语言配置
ThemeResolver   主题解析器的接口

HandlerExceptionResolver   生成ModelAndView对象实例

RequestToViewNameTranslator  用来当Controller没有返回View对象或者逻辑视图名称,并且在该方法中没有直接往 response的OutputStream里面写数据, 获取默认视图名称.

MVC执行流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。
  2. 前端控制器 (DispatcherServlet) 收到请求调用处理器映射器 (HandlerMapping),去查找处理器(Handler)。
  3. 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
  4. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。
  5. 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。
  6. 自定义的处理器类(Controller)将得到的参数进行处理并返回结果给处理器适配器(HandlerAdapter)。
  7. 处理器适配器 (HandlerAdapter)将得到的结果返回给前端控制器 (DispatcherServlet)。
  8. 前端控制器(DispatcherServlet)将 ModelAndView 传给视图解析器 (ViewReslover)。
  9. 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。
  10. 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。
  11. 前端控制器(DispatcherServlet)将渲染后的结果返回。


http://www.kler.cn/news/303956.html

相关文章:

  • 低代码-赋能新能源汽车产业加速前行
  • Anolis 8 NVME over TCP 配置使用
  • Qt-常用控件(3)-输入类
  • 【C++】深究C++三大特性之多态
  • 香港电讯SASE解决方案:终端与云端的安全护航
  • C语言 13 指针
  • 【Unity新闻】Unity将取消Runtime费用
  • Where I can save my openai-apikey safely for my flutter app
  • 【docker】docker 关键技术 —— 镜像制作
  • 宝塔部署Vue项目解决跨域问题
  • 【机器学习】自然语言处理中的Transformer模型:深度解析与前沿发展
  • 从GreaterWMS学习仓库管理系统
  • 在Word中,用VBA比较两段文本的相似度
  • AI创作新手册:精通Prompt提示词的提问策略
  • 基于鸿蒙API10的RTSP播放器(一:基本界面的实现)
  • 【Qt笔记】QScrollArea控件详解
  • 电脑安装OpenWRT系统
  • 黑龙江等保测评二级系统费用解析:如何合理预算?
  • (web自动化测试+python)2
  • Autosar(Davinci) --- 创建一个S/R类型的port(下)
  • 【设计模式】设计模式的八大原则
  • Kafka3.6.0 linux 安装,非zk模式
  • QT如何ui上的QTableWidget控件如何使用
  • HarmonyOS开发实战( Beta5.0)自定义装饰器实践规范
  • 【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作
  • Android 车联网——汽车系统介绍(附2)
  • Python 课程6-Pandas 和 Matplotlib库
  • MATLAB中的控制系统工具箱:深入指南与实践应用
  • c++ 包装器
  • Git常用命令(记录)