SpringMVC(二)原理

目录

一、配置Maven(为了提升速度)

二、流程&&原理

SpringMVC中心控制器

完整流程:


一、配置Maven(为了提升速度)

在SpringMVC(一)配置-CSDN博客的配置中,导入Maven会非常慢,这是因为里面的一些jar包来自国外。所以在此手动配置一下maven:

1.自行下载apache-maven后将其解压缩到D盘

2.在D:盘目录下创建一个新的空文件夹,命名为maven:

 3.点开项目的【文件】-->【设置】(这里的idea是中文版本的,正常版本应该是【File】-->【setting】):

4.找到构建、执行、部署下面的构建工具中的Maven:

5.点击改变Maven的主路径,选择已经下载好的D:盘apache-maven,然后点击确定。

 6.点击确定成功后,这里就会自动更新成我们创建的maven空文件夹:

 7.点击重写,选择D:盘apache-maven下conf下的logging下的setting.xml,点击确定。

8.完成这些后点击大的确定,回到pom.xml文件刷新,以后再导入依赖或是配置maven文件就更快了。

二、流程&&原理

现在在SpringMVC(一)配置-CSDN博客实现的基础上看一下实现的原理。

首先回忆一下servlet是如何处理合同http请求的:

 http请求打过来,随后根据通过web.xml文件(在eclipse中被注解代替了--这两者本质是一种功能),去到达不同的地址。

而在SpringMVC框架中只是重新使用web.xml文件实现这个功能,在servlet中,web.xml需要去一一映射,但是在SpringMVC框架中,web.xml文件做了一个配置:

通过dispatcherServlet去实现自动请求分发,“/”表示所有,即所有的请求都会打到dispatcherServlet中。

SpringMVC中心控制器

Spring的web框架围绕DispatcherServlet 【servlet调度】设计

DispatcherServlet的作用是将请求发送到不同的处理器

入门案例的执行流程

1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件

2. 开启了注解扫描,那么HelloController对象就会被创建

3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到

执行的具体方法

4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件

5. Tomcat服务器渲染页面,做出响应

SpringMVC官方提供图形

【这张图⭐--面试】

入门案例中的组件分析

1. 前端控制器(DispatcherServlet)

2. 处理器映射器(HandlerMapping)

3. 处理器(Handler)----一个又一个的方法

4. 处理器适配器(HandlAdapter)

5. 视图解析器(View Resolver)

6. 视图(View)

就着springmvc.xml文件分析一下:

①扫描的其实就是servlet文件,现在打开HelloController看一眼:

 1.Spring创建对象的方式

2.@RequestMapping地址映射

没有标注的时候默认是GET,当然可以通过下面这种方式指定具体是哪个方法。

 3.这里返回"suc",肯定不是一串字符串这么简单,这里面对应的跟显然是前端界面:

那么为什么这里可以以这种格式书写呢? 

这就牵扯到springmvc.xml文件③这一部分了:

前缀是/html/,后缀是.html,所以return时,返回的其实是,/html/suc.html,即一个前端界面。

完整流程:

运行项目时,首先会执行到web.xml文件中的:

即去到index.html文件:

也就是这里:

当点击入门程序时,就会触发这个请求;现在来看这个请求出自哪里:
 前面已经讲过了,这里的return实际上是return了一个html目录下的suc.html文件。

同时从hello.do到return的步骤,这里也是这一步操作(至于为什么不直接到达Handler而是通过处理器适配器---这里可以添加拦截器):

 这里来到suc.html文件,里面有元素显示:

现在来看这里面的msg究竟承载着什么内容,这里将再次回到HelloController文件,可以看见这里面存放的内容是“hello,SpringMVC”。

也就是点击入门程序后,显示(可以看见这里显示的请求路径是“locahost....../hello.do”):

至此,就是目前一个基础的SpringMVC框架和运行的流程,下面的所有使用都将围绕这个原理展开。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、redis的持久化

redis的持久化 在redist当中,高可用的技术包括持久化,主从复制,哨兵模式,集群。 持久化是最简单的高可用的方法,作用就是备份数据。即将数据保存到硬盘,防止进程退出导致数据丢失。 redis持久化方式&…

【算法】模拟退火算法学习记录

写这篇博客的原因是博主本人在看某篇文章的时候,发现自己只是知道SGD这个东西,但是到底是个啥不清楚,所以百度了一下,然后在通过博客学习的时候看到了退火两个字,想到了本科做数模比赛的时候涉猎过,就上bil…

Visual Point Cloud Forecasting enables Scalable Autonomous Driving——点云论文阅读(12)

此内容是论文总结,重点看思路!! 文章概述 这篇文章介绍了一个名为 ViDAR 的视觉点云预测框架,它通过预测历史视觉输入生成未来点云,作为自动驾驶的预训练任务。ViDAR 集成了语义、三维几何和时间动态信息,有效提升了感知、预测和规划等自动驾驶核心任务的性能。实验表明…

AI 将在今年获得“永久记忆”,2028美国会耗尽能源储备

AI的“永久记忆”时代即将来临 谷歌前CEO施密特揭示了AI技术的前景,他相信即将在2025年迎来一场伟大的变化。AI将实现“永久记忆”,改变我们与科技的互动过程。施密特将现有的AI上下文窗口比作人类的短期记忆,难以持久保存信息。他的设想是…

工控主板ESM7000/6800E支持远程桌面控制

英创公司ESM7000 是面向工业领域的双核 Cortex-A7 高性能嵌入式主板,ESM6800E则为单核Cortex-A7 高性价比嵌入式主板,ESM7000、ESM6800E都是公司的成熟产品,已广泛应用于工业很多领域。ESM7000/6800E板卡中Linux系统配置为linux-4.9.11内核、…

越权漏洞简介及靶场演示

越权漏洞简介及靶场演示 文章目录 一、什么是越权? (一)越权漏洞的概念(二)越权漏洞的分类(三)常见越权方法(四)未授权访问 二、越权漏洞测试过程 (一&…

VIT:视觉transformer|学习微调记录

一、了解VIT结构 vit提出了对于图片完全采用transformer结构而不是CNN的方法,通过将图片分为patch,再将patch展开输入编码器(grid_size网格大小),最后用MLP将输出转化为对应类预测。 详细信息可以看下面这个分享&…

coredns报错plugin/forward: no nameservers found

coredns报错plugin/forward: no nameservers found并且pod无法启动 出现该报错原因 是coredns获取不到宿主机配置的dns地址 查看宿主机是否有dns地址 resolvectl status 我这里是配置正确后,如果没配置过以下是不会显示出dns地址的 给宿主机增加静态dns地址之后将…

使用Diffusion Models进行图像超分辩重建

Diffusion Models专栏文章汇总:入门与实战 前言:图像超分辨率重建是一个经典CV任务,其实LR(低分辨率)和 HR(高分辨率)图像仅在高频细节上存在差异。通过添加适当的噪声,LR 图像将变得与其 HR 对应图像无法区分。这篇博客介绍一种方式巧妙利用这个规律使用Diffusion Mod…

NineData 荣获年度“创新解决方案奖”

近日,国内知名 IT 垂直媒体 & 技术社区 IT168 再次启动“技术卓越奖”评选,由行业 CIO/CTO 大咖、技术专家及 IT 媒体多方联合评审,NineData 凭借技术性能和产品创新等方面表现出色,在数据库工具领域荣获“2024 年度创新解决方…

liunx下载gitlab

1.地址: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 安装 postfix 并启动 yum install postfix systemctl start postfix systemctl enable postfix ssh服务启动 systemctl enable sshd systemctl start sshd开放 ssh 以及 http 服务&#xff0c…

SQL—替换字符串—replace函数用法详解

SQL—替换字符串—replace函数用法详解 REPLACE() 函数——查找一个字符串中的指定子串,并将其替换为另一个子串。 REPLACE(str, old_substring, new_substring)str:要进行替换操作的原始字符串。old_substring:要被替换的子串。new_substri…

Android笔试面试题AI答之Android基础(11)

Android入门请看《Android应用开发项目式教程》,视频、源码、答疑,手把手教 文章目录 1.Android的权限有哪些?**1. 普通权限****常见普通权限** **2. 危险权限****权限分组****常见危险权限组及权限** **3. 特殊权限****常见特殊权限** **4. …

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型 目录 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型1 过拟合和欠拟合1.1 过拟合1.2 欠拟合 2 正则化惩罚2.1 概念2.2 函数2.3 正则化种类 3 K折交叉验证3.1 概念3.2 图片理解3.3 函数导入3.4 参数理解 4 训练模型K折交…

[AHK]用大模型写ahk脚本

问题背景 遇到程序在运行,但是在屏幕上看不到的窘境,于是想用AHK来实现一键在主屏幕上居中显示。 解决思路 手撸是不可能手撸的,我有豆包我有cursor,于是想看看她俩到底能力咋样。 提示词 用AHK v2实现:热键WinC …

Word如何插入图片并移动到某个位置

Word如何插入图片并移动到某一个位置 新建word→插入→图片 选择合适的位置→选择图片→打开 点击图片→布局选项→选择文字环绕下的任意一个→固定在页面上 点击图片就可以将图片移动到任意位置

ElasticSearch7.10-分词器

文章目录 分词器1.字符过滤器1.介绍2.过滤html标签3.mappings过滤规则(屏蔽非文明用语)4.正则替换 2.自定义分词器1.代码2.查询 3.中文分词器1.下载ik分词器7.10.0版本(跟es对应)2.应用ik分词器1.进入插件目录下创建一个ik目录2.将…

python利用selenium实现大麦网抢票

大麦网(damai.cn)是中国领先的现场娱乐票务平台,涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出,抢票成为许多用户关注的焦点。然而,由于票务资源的有限性,以及大…

Linux 笔记 SELinux 常见操作与介绍

SELinux(Security-Enhanced Linux)是 Linux 操作系统中的一种安全模块,旨在提供更细粒度的访问控制。它最初由美国国家安全局(NSA)开发,目的是增强 Linux 系统的安全性。SELinux 通过强制访问控制&#xff…

Elasticsearch VS Easysearch 性能测试

压测环境 虚拟机配置 使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB) vCPU内存 (GiB)磁盘(GB)带宽(Gbit/s)数量1664500500024 Easysearch 配置 7 节点…