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

SpringMVC原理及核心组件

一、SpringMVC原理及核心组件

1、 Spring MVC的工作原理

Spring MVC 是一个对javaWeb中Servlet 简化和封装,

1.首先SpringMVC 配置DispatcherServlet 来接受所有的请求,我们通过DispatcherServlet 响应的所有数据,DispatcherServlet 是HttpServlet的子类,他的所有方法(Get,Post…)最终都会执行doDispatch方法

protected void doDispatch(HttpServletRequest request, HttpServletResponse response)  {}

2.根据用户的输入url通过SpringMVC handlerMapping组件 找到对应的 HandlerExecutionChain 执行链

mappedHandler = this.getHandler(processedRequest);

3.找到handler 适配的HandlerAdapter

HandlerAdapter ha = this.getHandlerAdapter(mappedHandler.getHandler());

4.执行所有注册拦截器的preHandler方法

if (!mappedHandler.applyPreHandle(processedRequest, response)) {return;
}
  1. 通过HandlerAdapter 的适配方法来调用handler,返回ModelAndView
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

6.倒序执行所有注册拦截器的postHandler方法

mappedHandler.applyPostHandle(processedRequest, response, mv);

7.请求视图解析和视图渲染,如果是jsp就返回jsp页面,如果是 被@ResponseBody就返回JSON数据

this.processDispatchResult(processedRequest, response, mappedHandler, mv, (Exception)dispatchException);

2.Spring MVC的主要组件?

  • 前端控制器(DispatcherServlet):接收用户请求,给用户返回结果。
  • 处理器映射器(HandlerMapping):根据请求的url路径,通过注解或者xml配置,寻找匹配的Handler。
  • 处理器适配器(HandlerAdapter):Handler 的适配器,调用 handler 的方法处理请求。
  • 处理器(Handler):执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装到ModelAndView对象中。
  • 视图解析器(ViewResolver):将逻辑视图名解析成真正的视图View。
  • 视图(View):接口类,实现类可支持不同的View类型(JSP、FreeMarker、Excel等)。

相关文章:

SpringMVC原理及核心组件

一、SpringMVC原理及核心组件 1、 Spring MVC的工作原理 Spring MVC 是一个对javaWeb中Servlet 简化和封装, 1.首先SpringMVC 配置DispatcherServlet 来接受所有的请求,我们通过DispatcherServlet 响应的所有数据,DispatcherServlet 是Htt…...

【rk3568-linux】 rk3568x_linux-- 编译说明

概述 一个好的安装教程能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 开发环境 开发环境:ubuntu18 文章目录 概述开发环境一、选择型号二、全自动编译三、…...

模拟计算器编程教程,中文编程开发语言工具编程实例

模拟计算器编程教程,中文编程开发语言工具编程实例 中文编程系统化教程,不需英语基础。学习链接 ​​​​​​https://edu.csdn.net/course/detail/39036 课程安排:初级1 1 初级概述 2 熟悉构件取值赋值 3 折叠式菜单滑动面板编程 4 自定…...

Spring Security漏洞防护—HTTP 安全响应头

一、默认的 Security Header Spring Security提供了 一套默认的安全HTTP响应头,以提供安全默认值。虽然这些头信息中的每一个都被认为是最佳实践,但应该注意的是,并不是所有的客户端都使用这些头信息,所以鼓励进行额外的测试。 …...

Plooks大型视频在线一起看网站源码

在前段时间,因为想和异地的朋友一起看电影,但是发现有电影的地方没有一起看功能,有一起看功能的视频网站没有电影,所以就想自己做一个一起看网站,于是就有了Plooks。 Plooks是一个完整的视频网站,其中包括…...

图像处理中底层、高层特征、上下文信息理解

1.图像的语义信息: 图像的语义分为视觉层、对象层和概念层。 视觉层即通常所理解的底层,即颜色、纹理和形状等等,这些特征都被称为底层特征语义; 对象层即中间层,通常包含了属性特征等,就是某一对象在某一时刻的状态&a…...

负载均衡的算法(静态算法与动态算法)

1.静态算法 静态算法是不考虑服务器动态负载的算法,包括: (1)轮转算法:轮流将服务请求(任务)调度给不同的节点(即:服务器)。 (2)加…...

mac安装jdk

1、下载jdk(我的电脑要下载arm版,截图不对) Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#jdk17-mac 2、双击安装...

WIN11+OPENCV4.8 编译及下载失败处理方法

1. 基础准备 1. 下载Opencv和Contrib库 Opencv:Releases opencv/opencv GitHub Contrib:Tags opencv/opencv_contrib GitHub 2. 安装Visual Studio 或 MinGW64 MinGW:Tags opencv/opencv_contrib GitHub 这里安装1.12.0 MinGW 。 以…...

万宾科技智能井盖传感器怎么使用?

时代在进步,科技在更新,人们身边的万事万物都在随着时代的脚步不断的前进。各种各样高科技技术在城市基础设施建设的过程中得到应用,很多智能产品不仅施工方便,而且可以向政府部门提供精准的数据,提高了相关管理人员的…...

Server Name Indication(SNI),HTTP/TLS握手过程解析

Server Name Indication(SNI)是一种TLS扩展,用于在TLS握手过程中传递服务器的域名信息。在未使用SNI之前,客户端在建立TLS连接时只能发送单个IP地址,并且服务器无法知道客户端请求的具体域名。这导致服务器需要使用默认…...

react项目实现文件预览,比如PDF、txt、word、Excel、ppt等常见文件(腾讯云cos)

使用腾讯云文档预览&#xff0c;需要开通文档预览功能&#xff0c;该功能需要收费的。 使用限制 如果需要图片预览、视频或音频可以使用获取下载链接。 页面代码 <button onClick() > {handleClick(myself/文档.xlsx)}>预览</button><div style{{ height:…...

ES SearchAPI----Query DSL语言

文章目录 Getting Startedmatch_all查询全部sort排序from\size分页_source指定字段 match匹配查询match_phrase短语匹配multi_match多字段匹配range范围查询bool复合查询must必须匹配&#xff0c;可贡献得分must_not必须不匹配&#xff0c;可贡献得分should可有可无&#xff0c…...

【STM32】HAL库——串口中断只接收到两个字符

【STM32】HAL库——串口中断只接收到两个字符 一、问题描述二、解决方法三、原因分析 一、问题描述 环境&#xff1a;STM32CubeMX(6.7.0)MDK-ARM(V5.36.0.0)STM32F103C8T6 使用XCOM发送字符串&#xff08;总共8个字符&#xff09;&#xff0c;单片机进行解析为ModBus协议失败…...

页面html结构导出为word或pdf

一、使用场景和原理 需要将当前页面(一般详情页面)或者dom容器中的内容保存/截图&#xff0c;并且导出为word或者pdf 导出word:获取dom结构直接转化为word导出 导出pdf:用canvas生成当前页面或者dom范围的快照&#xff0c;参考截图功能&#xff0c;然后将生成的canvas转为pdf内…...

Object.prototype.toString.call() 和 instanceOf 和 Array.isArray() 详解

解析: 理解 Object.prototype.toString.call(), instanceof, 和 Array.isArray() 是 JavaScript 中重要的类型检查工具。以下是一个较为详细的解释和示例代码&#xff0c;帮助你理解它们的工作原理和使用场景 Object.prototype.toString.call()&#xff1a; Object.prototyp…...

自学(黑客技术)方法——网络安全

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…...

CVE-2023-46227 Apache inlong JDBC URL反序列化漏洞

项目介绍 Apache InLong&#xff08;应龙&#xff09;是一站式、全场景的海量数据集成框架&#xff0c;同时支持数据接入、数据同步和数据订阅&#xff0c;提供自动、安全、可靠和高性能的数据传输能力&#xff0c;方便业务构建基于流式的数据分析、建模和应用。 项目地址 h…...

MySQL几种方法的数据库备份

MySQL几种方法的数据库备份_mysql备份的几种方式-CSDN博客 MySQL有几个方法来备份 最近博客一直想写点。可是不知道写什么&#xff0c;感觉自己近期的知识没有什么添加&#xff0c;今天想到了一篇能够写的博客。曾经试过依据data目录备份MySQL。可是从来没有成功过。前几天帮助…...

CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服务的应用合集安装DockerGitLabGitLab-Runner阿里云容器仓库 GitLab-CIJava微服务的GitLab-CI应用 CI/CD&#xff1a;GitLab-CI 自动化集成/部署 JAVA微服…...

【LeetCode刷题日记】:反转链表(面试基础考察)

&#x1f525;个人主页&#xff1a;北极的代码&#xff08;欢迎来访&#xff09; &#x1f3ac;作者简介&#xff1a;java后端学习者 ❄️个人专栏&#xff1a;苍穹外卖日记&#xff0c;SSM框架深入&#xff0c;JavaWeb ✨命运的结局尽可永在&#xff0c;不屈的挑战却不可须臾或…...

告别重复造轮子:用快马AI一键生成智能车数据处理与可视化工具

今天想和大家分享一个提升智能车开发效率的小工具。在智能车项目中&#xff0c;我们经常需要处理大量传感器数据&#xff0c;比如IMU、GPS等设备采集的CSV文件。传统做法是每次都要从头写数据处理代码&#xff0c;既浪费时间又容易出错。最近我发现用InsCode(快马)平台可以快速…...

17 指挥AI写Mamba相关模型代码,快速适配大模型场景

指挥AI写Mamba相关模型代码,快速适配大模型场景 摘要 本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十七篇,属于第三阶段多场景实战核心内容。本篇聚焦当下大模型领域热门的Mamba架构,针对零基础大模型开发、无深度学习基础的使用者,拆解指挥AI…...

大模型学习指南:小白程序员必备,收藏这份2026年开源大模型体系与实战教程!

大模型学习指南&#xff1a;小白程序员必备&#xff0c;收藏这份2026年开源大模型体系与实战教程&#xff01; 本文全面介绍了2026年主流开源大模型体系&#xff08;如Llama、Qwen、Mistral等&#xff09;&#xff0c;解析了Prefix Decoder、Causal Decoder、Encoder-Decoder的…...

小米智能家居如何通过Home Assistant实现统一控制?官方集成深度解析

小米智能家居如何通过Home Assistant实现统一控制&#xff1f;官方集成深度解析 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 在智能家居生态系统中&#xff0c;小米…...

从手机信令到城市画像:数据驱动的精细化人口洞察与规划实践

1. 手机信令数据&#xff1a;城市管理的"数字显微镜" 每天早上7点&#xff0c;北京西二旗地铁站的闸机前总会排起长队。这种肉眼可见的通勤潮汐&#xff0c;其实只是城市人口流动的冰山一角。而手机信令数据就像一台高精度显微镜&#xff0c;能让我们看清城市运行的每…...

多少家庭不是穷,是被面子慢慢拖垮的

——《清醒日常&#xff1a;隐形账本系列》 开篇你可能也经历过这样的时刻。婚礼现场灯光闪得人眼睛发花。你端着酒杯&#xff0c;一边笑着跟老同学说“恭喜恭喜”&#xff0c;一边脑子里飞快算着——这次随多少才不丢人&#xff1f;回家路上&#xff0c;你老婆小声问一句&…...

Steam Achievement Manager终极指南:如何完全掌控你的Steam成就系统

Steam Achievement Manager终极指南&#xff1a;如何完全掌控你的Steam成就系统 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager Steam Achievement Manage…...

5个步骤彻底掌握拯救者工具箱:释放笔记本隐藏性能的完整指南

5个步骤彻底掌握拯救者工具箱&#xff1a;释放笔记本隐藏性能的完整指南 【免费下载链接】LenovoLegionToolkit Lightweight Lenovo Vantage and Hotkeys replacement for Lenovo Legion laptops. 项目地址: https://gitcode.com/gh_mirrors/le/LenovoLegionToolkit 如果…...

005-SpringSecurity-Demo 配置外部文件映射

SpringSecurity-Demo 配置外部文件映射一、需求说明二、实现步骤1. 定义配置属性类&#xff08;读取yml配置&#xff09;2. 编写资源映射配置3. application.yml 配置&#xff08;路径可自定义&#xff09;三、原理讲解&#xff08;一看就懂&#xff09;四、使用示例五、路径写…...