SpringMVC流程

news2024/11/16 19:35:54

1、SpringMVC常用组件:

  • DispatcherServlet(请求分发器):Spring MVC的核心组件之一,负责处理全局配置和将用户请求分发给其他组件进行处理。
  • Controller(处理器): 实际处理业务逻辑的组件。
  • HandlerMapping(处理器映射器):根据请求URI确定应该由哪个处理器(Controller)来处理该请求。HandlerMapping维护一个请求路径和处理器的映射关系(通过扫描@RequestMapping获得)。
  • HandlerExecutionChain(处理器执行链):请求处理的执行链,包含处理器和拦截器的执行顺序。HandlerExecutionChain对象包含一个处理器(handler),这个处理器是对Controller的包装。
  • HandlerAdapter(处理器适配器):请求可能是普通的HTTP请求,也可能是WebSocket等请求,需要选择合适的适配器去执行HandlerExecutionChain对象包含的拦截器和处理器(handler)逻辑。
  • ModelAndView(模型和视图):是一个将处理结果的模型数据以及要展示的视图名称封装在一起的对象,供视图解析器进行处理。
  • ViewResolver(视图解析器):将 ModelAndView 对象中的视图名称解析为具体的视图对象(View)。例如,在Controller中返回的是“user/detail”,那么它就会找到“/WEB-INF/jsp/user/detail.jsp”作为视图(View)。
  • View(视图):负责将模型数据渲染到视图中,并生成最终的HttpResponse对象。View可以是JSP、Thymeleaf等不同的模板引擎,或者是其他自定义的视图实现。

2、SpringMVC流程

在这里插入图片描述

  1. 客户端向Web服务器(如Tomcat)发送一个Http请求,Web服务器将请求转给 DispatcherServlet 处理。

  2. DispatcherServlet 接收到请求后,解析请求地址,得到URI,然后通过 HandlerMapping 得到包含拦截器和handler的 HandlerExecutionChain。

  3. DispatcherServlet 根据得到的Handler对象,选择一个合适的 HandlerAdapter。HandlerAdapter 负责调用拦截器和handler执行相应的逻辑,执行完毕后返回一个 ModelAndView对象 给 DispatcherServlet。

  4. DispatcherServlet 调用 ViewResolver 将 ModelAndView对象 中的视图名称解析为具体的视图对象(View)。

  5. DispatcherServlet 调用视图对象的方法,解析 Model(模型数据),然后进行视图渲染,最后形成一个 HttpResponse 对象。

  6. 最后,DispatcherServlet(请求分发器)将生成的 HttpResponse 对象返回给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链接物化视图在 ClickHouse 中的应用

本文字数:7728;估计阅读时间:20 分钟 作者:Mark Needham 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 在 ClickHouse 中,物化视图【https://clickhouse.com/docs/en/guide…

uni-app App端实现文字语音播报(Ba-TTS)

前言 最近在遇到消息提示语音播放出来,查了一圈文档发现并没有自带api 后面想起支付宝收钱播报,不受限与系统环境和版本环境(后面查阅他是音频实现的) 如果是由安卓端需要语音播放功能-直接使用Ba-TTs救急(需要付费2…

tcpdump源码分析

进入tcpdump.c(函数入口)之前,先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作,每一个参数有对应的flag, 在tcpdump 的main 里面, 会根据用户的传入的参数来…

SK6812-RGBW是一个集控制电路与发光电路于一体的智能外控LED光源

产品概述: SK6812-RGBW是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,电源稳压电路,内置恒流电路&#xff0…

最新ChatGpt Desktop for Mac 安装使用教程

1. 下载地址 请点击链接下载 ChatGPT Desktop for MacOS 2. 使用要求 MacOS 版本 14需要时M1芯片的,如果你是因特尔的暂时还还不行 就算下载了也会出现下面的异常 3. 获取权限资格 目前 ChatGPT MacOS Desktop还不是全量开放的, 如果你没有收到通知说明你还没…

Redis篇 redis基本命令和定时器原理

基本命令和定时器原理 一. exists命令二. del命令三. Expire命令四. ttl命令五. redis的过期策略六. 定时器的两种设计方式七. type命令 一. exists命令 用来判断key的值是否存在 返回值是key的个数 这样写的话,有没有什么区别呢? 效率变低,消…

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型,尤其是那些拥有千亿参数的模型,因其出色的商业应用表现而受到市场的青睐。但是,直接通过API使用这些模型可能会带来数据泄露的风险,尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…

数据库主流技术

文章目录 1.分布式数据库1.1 基础知识1.2 体系结构 2.Web数据库3.XML与数据库4.面向对象数据库5.大数据和数据仓库 1.分布式数据库 1.1 基础知识 分布式数据库系统是数据库系统和计算机网络相结合的产物。 由于计算机功能增强,成本下降,几乎每个办公室…

通过扩展指令增强基于覆盖引导的模糊测试

本文由Bruno Oliveira于2024年4月25日发表于IncludeSec的官方网站上。作为IncludeSec的安全研究人员,在他们日常的安全审计和渗透测试工作中,有时需要为客户开发一些模糊测试工具。在安全评估方法中使用模糊测试技术,可以有效地在复杂的现代化…

小程序-购物车-基于SKU电商规格组件实现

SKU 概念: 存货单位( Stock Keeping Unit ), 库存 管理的最小可用单元,通常称为“单品”。 SKU 常见于电商领域,对于前端工程师而言,更多关注 SKU 算法 ,基于后端的 SKU 数据…

AI大模型探索之路-实战篇6: Function Calling技术调研之详细流程剖析

系列篇章💥 AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践 AI大模型探索之路-实战篇5: Open Interpreter开放代码解释器调研实践 目录 系列篇章💥一、前言二、Function Calling详细流程剖析1、创建OpenAI客户端2、定…

infoq读书笔记-Davide Taibi博士-花8年转型微服务却得不到回报,问题出在哪 儿?

InfoQ:您的论文“On the Definition of Microservice Bad Smells”涉及非常多的微服务不良做法,但如果要用几个大类别来列举危害性比较大的微服务反模式,您认为会是哪几类?另外,您能再大概分析说明下造成这个几个反模式…

《计算机网络微课堂》1-2:因特网概述

1-2:因特网概述 网络、互连网(互联网)和因特网因特网发展的三个阶段因特网的标准化工作因特网的组成 ‍ 网络、互连网(互联网)和因特网 我们首先介绍网络、互联网(互连网)因特网的基本概念&a…

c语言——宏offsetof

1.介绍 !!! offsetof 是一个宏 2.使用举例 结构体章节的计算结构体占多少字节需要先掌握(本人博客结构体篇章中已经讲解过) 计算结构体中某变量相对于首地址的偏移,并给出说明 首先,结构体首个…

MyBatis常见报错:org.apache.ibatis.binding.BindingException

哈喽,大家好,我是木头左! 异常现象描述 当开发者在使用MyBatis进行数据库操作时,可能会遇到org.apache.ibatis.binding.BindingException: Parameter appId not found这样的错误提示。这个错误通常会让程序无法正常运行&#xff…

如何在华为手机上恢复已删除的视频[4种解决方案]

概括 在数字媒体时代,智能手机已成为我们的个人金库,存储以视频形式捕捉的珍贵记忆。然而,意外删除这些珍贵的文件可能会是一次令人心痛的经历。对于华为手机用户来说,由于删除或其他意外导致视频丢失尤其令人痛苦。但不用担心&a…

cadence23---PCB Editer 学习笔记

1.交互式布局 在Orcad中点击图标N生成第一网表: 在PCB Editer中导入第一网表, 之后点击移动命令并在右侧属性框中勾选Symbol选项卡: 设置--应用模式--点击常规编辑: 之后就可以进行交互式选择了。 绿色图标为打开全部飞线&#…

【Spring Security + OAuth2】OAuth2

Spring Security OAuth2 第一章 Spring Security 快速入门 第二章 Spring Security 自定义配置 第三章 Spring Security 前后端分离配置 第四章 Spring Security 身份认证 第五章 Spring Security 授权 第六章 OAuth2 文章目录 Spring Security OAuth21、OAuth2简介1.1、OAu…

力扣:92. 反转链表 II(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的…