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

SpirngMVC执行原理--自学版

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求
  2. HandlerMapper为处理器映射。DispatcherServlet调用。HandlerMapping根据请求url查找Handler
  3. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器。
  4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射
  5. HandlerAdapter表示处理器适配器,按照特定的规则去执行Handler
  6. Handler让具体的Controller执行
  7. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView
  8. HnadlerAdapter 将视图逻辑名或模型传递给DispatcherServlet
  9. DispatcherServlet调用视图解析器来解析HandlerAdapter传递的逻辑视图名
  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet
  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
  12. 最终视图呈现给用户

SSM=javaweb做项目
Spring =IOC +AOP

在写项目的过程中,注意检查是否引入mvc依赖,以及两个约束文件
在这里插入图片描述
注意记得DispatcherServlet要绑定SpringMVC的配置文件

在编写Springmvc的配置文件时,【三个很重要的部分】

  • 添加处理器映射器 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  • 添加处理器适配器<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  • 添加视图解析器 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean>[其他模板引擎 thymeleaf]

注意BeanNameHandlerMapping 这个处理器需要根据bean的名字来找,所以要进行手动配置

以下使用注解开发Springmvc 保留视图解析器 添加自动扫描包,让注解生效,由IOC容器进行统一管理

 ***<!--自动扫描包,让指定包下的注解生效,由IoC容器统一管理  -->***<context:component-scan base-package="com.demo.Controller"/><!--设置不然Springmvc处理静态资源 --><mvc:default-servlet-handler/><!--支持mvc注解驱动 在Springmvc中一般**采用@RequestMapping注解来完成映射关系**要想使该注解生效,必须向上下文中注册@DefaultAnnotationHandlerMapping和一个AnnotationMethodHandlerAdapter实例让这两个实例分别在类级别和方法级别处理   而innotation-driven配置帮助我们自动完成上述两个实例的注入--><mvc:annotation-driven/><!--视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean>

@Controller是为了让Spring IOC容器初始化时自动扫描到

主要实现步骤:

  • 编写web.xml,注册DispatcherServlet
  • 编写springmvc配置文件
  • 创建对应的控制类

相关文章:

SpirngMVC执行原理--自学版

DispatcherServlet表示前置控制器&#xff0c;是整个SpringMVC的控制中心&#xff0c;用户发出请求&#xff0c;DispatcherServlet接收请求并拦截请求HandlerMapper为处理器映射。DispatcherServlet调用。HandlerMapping根据请求url查找HandlerHandlerExecution表示具体的Handl…...

获取savemodel的输入输出节点

saved_model_cli show --dir savemodels --all 结果&#xff1a; MetaGraphDef with tag-set: ‘serve’ contains the following SignatureDefs: signature_def[‘translation_signature’]: The given SavedModel SignatureDef contains the following input(s): inputs[‘i…...

《Learning to Reconstruct Botanical Trees from Single Images》学习从单幅图像重建植物树

读书报告下载https://download.csdn.net/download/weixin_43042683/87448211论文原文https://dl.acm.org/doi/10.1145/3478513.3480525论文视频https://www.bilibili.com/video/BV1cb4y127Vp/?fromseopage&vd_source5212838c127b01db69dcc8b2d27ca5171引言植物存在在室外与…...

vant 4 正式发布,支持暗黑主题,那么是如何实现的呢

2022年10月25日首发于掘金&#xff0c;现在同步到公众号。11. 前言大家好&#xff0c;我是若川。我倾力持续组织了一年多源码共读&#xff0c;感兴趣的可以加我微信 lxchuan12 参与。另外&#xff0c;想学源码&#xff0c;极力推荐关注我写的专栏《学习源码整体架构系列》&…...

MySQL的复制 二

复制是MySQL的一项功能&#xff0c;使服务器能够将更改从一个实例恢复到另一个实例 主服务器&#xff08;master&#xff09;将所有数据和结构更改记录到二进制日志中。二进制日志格式是基于语句的、基于行的和混合的。 从属服务器&#xff08;slave&#xff09;从主服务器请求…...

秒杀项目之秒杀商品展示及商品秒杀

目录前言一、登录方式调整二、生成秒杀订单2.1 绑定秒杀商品2.2 查看秒杀商品2.3 订单秒杀2.3.1 移除seata相关&#xff08;方便测压&#xff09;2.3.2 生成秒杀订单2.3.3 前端页面秒杀测试注意前言 博主博客用到的资源都会同步分享到资源包中 一、登录方式调整 第1步&#xf…...

教育行业需要什么样的数字产品?

数字化转型的浪潮已经席卷了各行各业&#xff0c;不仅出现在互联网、电商、建筑等行业&#xff0c;还应用在了教育行业。数字化的教育ERP软件能够在满足学校需求的基础上&#xff0c;帮助学校完善各类工作流程&#xff0c;提高工作效率。 对于一个拥有多个校区&#xff0c;上万…...

Spring MVC

一、Spring MVC介绍 a. Spring MVC是一个Web框架 b. Spring MVC是基于Servlet API构成的 MVC 是 Model View Controller 的缩写。 MVC 是⼀种思想&#xff0c;⽽ Spring MVC 是对 MVC 思想的具体实现。 学习Spring MVC目标&#xff1a; a.连接功能&#xff1a;将用户&#xff…...

类与对象(上)

类与对象(上) 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将一件事情拆分成不同的对象&#xff0c;靠对象之间…...

正确安装 torch_geometric库

step1&#xff1a; 查看pytorchcuda 版本 torch-scatter torch-sparse torch-cluster torch-spline-conv 这些关联包要与torch版本匹配。 import torch print(torch.__version__) print(torch.cuda.is_available()) torch.version.cuda或者 pip list查看版本 step2&#xff…...

【Unity VR开发】结合VRTK4.0:自身移动(滑动)

语录&#xff1a; 依山傍水房树间&#xff0c;行也安然&#xff0c;住也安然&#xff1b; 一条耕牛半顷田&#xff0c;收也凭天&#xff0c;荒也凭天&#xff1b; 雨过天晴驾小船&#xff0c;鱼在一边&#xff0c;酒在一边&#xff1b; 夜晚妻子话灯前&#xff0c;今也谈谈…...

G1垃圾回收器详解

文章目录前言一、思考问题二、官方文档三、基本介绍四、G1的内存模型五、G1的标记过程六、G1的垃圾回收1、G1过程梳理2、Young GC3、Mixed GC4、Full GC七、参数介绍八、典型问题1、疏散失败&#xff08;Evacuation Failure&#xff09;2、大对象分配&#xff08;Humongous All…...

tws耳机哪个牌子音质好?tws耳机音质排行榜

随着蓝牙耳机市场的不断发展&#xff0c;使用蓝牙耳机的人也逐渐增多&#xff0c;近年来更是超越有线耳机成为最火爆的数码产品之一。那么&#xff0c;tws耳机哪个牌子音质好&#xff1f;下面&#xff0c;我来给大家推荐几款音质好的tws耳机&#xff0c;可以当个参考。 一、南…...

TIA博途中DB数据块清零的具体方法示例

TIA博途中DB数据块清零的具体方法示例 TIA中数据块如何实现清零? 在TIA指令集内有多个移动指令可对DB块内数据进行清零处理。对于S7-1500 CPU或ET200SP CPU来说,可使用BLKMOV、FILL以及SCL的POKE_BLK指令。但是这些指令对DB块清零时,要求DB块必需为非优化DB。 对于优化的DB…...

iptables防火墙屏蔽指定ip的端口

因为需要测试客户端程序与hadoop服务器之间正常通信需要开通的端口, 所以在hadoop各服务器上使用iptables防火墙屏蔽了测试客户端程序的ip和所有端口。然后&#xff0c;根据报错信息提示的端口号来逐步放开直到能正常通信下载文件。 在服务器端屏蔽指定ip访问所有端口 #查看…...

JavaScript Math(算数) 对象

JavaScript Math&#xff08;算数&#xff09; 对象 Math 是一个内置对象&#xff0c;它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。 Math 用于 Number 类型。它不支持 BigInt。 描述 与其他全局对象不同的是&#xff0c;Math 不是一个构造器。Math 的所…...

超详细的JAVA高级进阶基础知识04

目录 4. 面向对象高级 - 常用的API 4.1 Arrays 工具类 4.1.1 Arrays 类介绍 4.2 冒泡排序 4.3 选择排序 4.4 二分查找 4.5 正则表达式 4.5.1 String 类中与正则有关的常见方法 4.5.2 练习 4.5.3 今日学习目标 4. 面向对象高级 - 常用的API 4.1 Arrays 工具类 4.1.1…...

Python 运算符?

什么是运算符&#xff1f; 本章节主要说明Python的运算符。举个简单的例子 4 5 9 。 例子中&#xff0c;4 和 5 被称为操作数&#xff0c; 称为运算符。 Python语言支持以下类型的运算符: 算术运算符 比较&#xff08;关系&#xff09;运算符 赋值运算符 逻辑运算符 位运算符…...

linux nuxt 部署 问题汇总

安装node centos 7 请选择 node版本 v16.1.0 进行安装&#xff0c; npm 版本 7.11.2 亲测这个版本有效&#xff0c;否则会出现 Error: Cannot find module ‘node:fs/promises‘ 等问题 node安装亲参照&#xff1a; Linux node 安装教程_linux node安装_围城少年的博客…...

C++内存管理

文章目录1. c的内存管理例题2.c管理方式1.c的内置类型1.申请一个空间并初始化2.申请连续的空间并初始化3.总结2.c的自定义类型2.总结3.operator new与operator delete函数4.new和delete的实现原理1.内置类型2.自定义类型内存泄露问题&&delete先析构的原因编译器实现机制…...

3分钟极速攻略:ctfileGet如何一键破解城通网盘下载限速

3分钟极速攻略&#xff1a;ctfileGet如何一键破解城通网盘下载限速 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾因城通网盘的低速下载而焦虑&#xff1f;面对大文件的漫长等待和频繁验证码&…...

Unity美术资源导入避坑指南:从‘2的N次方’到‘ASTC压缩’,搞懂这些让你的游戏包体瘦身50%

Unity移动端美术资源优化实战&#xff1a;从纹理规范到跨平台压缩策略 移动游戏开发中&#xff0c;美术资源往往占据包体大小的70%以上。上周团队刚把一个150MB的Demo压缩到89MB&#xff0c;关键就在于纹理资源的规范处理。不同GPU架构对纹理格式的解析差异&#xff0c;可能导致…...

戴尔G15终极散热解决方案:TCC-G15完整使用指南

戴尔G15终极散热解决方案&#xff1a;TCC-G15完整使用指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 还在为戴尔G15笔记本的高温问题而烦恼吗&#xff1f…...

C语言打印三角形别再只会用*了!用字母、数字、符号玩出新花样(附完整代码)

C语言打印三角形&#xff1a;用字母、数字和符号玩转循环艺术 在C语言入门阶段&#xff0c;打印三角形几乎是每个初学者必经的练习。但你是否已经厌倦了千篇一律的星号(*)图案&#xff1f;今天&#xff0c;我们将打破常规&#xff0c;探索如何用字母、数字和各种符号来创造独特…...

人生杠杆具象化的庖丁解牛

它的本质是&#xff1a;**找到那些 投入一次努力&#xff0c;却能产生无限次复用或指数级放大效果 的工具、媒介或关系。它打破了“时间金钱”的线性交换逻辑&#xff0c;实现了 “单位时间产出最大化”。这是一种 从“加法思维”到“乘法思维” 的范式转移。 如果把人生比作物…...

InjectFix实战:除了修Bug,如何在Unity里用它安全地‘新增’功能与属性?

InjectFix实战&#xff1a;突破Bug修复边界&#xff0c;安全扩展Unity功能 在Unity开发中&#xff0c;InjectFix作为热修复方案早已被开发者熟知&#xff0c;但大多数教程仅停留在修复Bug的基础用法上。当线上版本需要临时增加活动界面属性或工具函数时&#xff0c;重新打包发布…...

【运算篇】算术与逻辑律令(3):比特的手术刀,镜像翻转与空间缝合

在 4-bit 的逻辑地牢里&#xff0c;如果说算术指令提供了“肌肉”&#xff0c;逻辑指令开启了“感官”&#xff0c;那么接下来我们要聊的&#xff0c;则是这台机器最细腻的形态手术。如果说 AND/OR 是在判定“存在”&#xff0c;那么 NOT 和移位指令&#xff08;SHL/SHR&#x…...

【STM32H7实战】HRTIM高分辨率定时器在数字电源与电机控制中的高级应用与HAL库配置

1. HRTIM高分辨率定时器概述 HRTIM&#xff08;High-Resolution Timer&#xff09;是STM32H7系列中一个强大的定时器外设&#xff0c;专为数字电源转换、电机控制等高性能实时控制场景设计。相比普通定时器&#xff0c;它的分辨率高达184ps&#xff08;在400MHz主频下&#xff…...

5分钟掌握HunterPie:解决《怪物猎人:世界》战斗信息盲区的终极指南

5分钟掌握HunterPie&#xff1a;解决《怪物猎人&#xff1a;世界》战斗信息盲区的终极指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_…...

碧蓝航线脚本补丁Perseus:原生库的无偏移皮肤解锁技术实现

碧蓝航线脚本补丁Perseus&#xff1a;原生库的无偏移皮肤解锁技术实现 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 在移动游戏修改领域&#xff0c;实现版本兼容性一直是技术挑战的核心。Perseus项目通…...