【SpringBoot】-Spring MVC详解

作者:学Java的冬瓜
博客主页:☀冬瓜的主页🌙
专栏:【Framework】
主要内容:SpringMVC项目的创建,关于使用SpringMVC框架前端传参和后端获取参数。关于SpringMVC框架后端返回数据的实战,如返回静态页面,返回文本(字符串),返回一个地址进行转发或者重定向。

文章目录

  • 一、什么是Spring MVC?
  • 二、Spring MVC的使用
    • 1、Spring MVC项目的创建和连接
    • 2、获取参数
    • 3、返回数据
      • 3.1、返回静态页面
      • 3.2、返回text/html
      • 3.3、请求转发或请求重定向

一、什么是Spring MVC?

1> Spring MVC的作用: 为了实现HTTP响应。
2> 什么是Spring MVC?

Spring MVC 名称由 Spring Web MVC 简化得到,它是在Spring中的一个Web框架。
Spring MVC基于Servlet API构建。

3> 什么是MVC?

MVC是Model,View,Controller的缩写。这是软件工程中的一种软件架构模式,它把软件系统分为 模型,视图,控制器三个部分。
注意:MVC模式的HTTP请求的响应结果是一个视图而不是数据(前后端不分离)。
在这里插入图片描述

4>MVC和Spring MVC的关系?

Spring MVC 是一个实现了MVC模式,并继承了Servlet API的Web框架。

5>扩展:

我们平常总说项目是由什么技术实现的?如Servlet+JSP实现,SSM实现,那么这SSM是啥?
SSM: Spring + Spring MVC + MyBatis => Spring Boot + Spring Web(Spring MVC) + MyBatis
SM: Spring Boot(Spring Web) + Mybatis

二、Spring MVC的使用

学习Spring MVC需要掌握以下三个内容:连接的功能,获取参数的功能,输出数据的功能。

1、Spring MVC项目的创建和连接

1> 如何方便的创建Spring MVC项目?

2018年前,使用Maven添加 Spring MVC框架方式创建
现在,使用SpringBoot来创建Spring MVC项目(简单得多)

使用SpringBoot创建Spring MVC项目:参考这篇创建SpringBoot项目的过程:【Spring Boot项目的创建】
只需在创建SpringBoot项目的最后添加 Spring Web的依赖即可。
在这里插入图片描述

2> 实现连接
法一:@RequestMapping注解进行连接

要实现连接,需要知道 @RequestMapping这个注解,以下是这个注解的关键理解:
a.这个注解用于注册接口的路由映射,可以使用多级路由,也可以多个路由对应同一个方法。
b.这个注解既可修饰类也可修饰方法
c.既可支持get请求,又可支持post请求。若要指定只能使用某种请求,可以传参,如:@RequestMapping(value = {"/fuc", "/func"}, method = RequestMethod.POST),或者使用法二进行连接。

在这里插入图片描述
代码:

	// 法一:@RequestMapping注解实现连接
    @RequestMapping(value = {"/fuc", "/func"}, method = RequestMethod.POST)
    public String func(){
        return "<h1>Hello, Spring MVC<h1>";
    }

法二:@PostMapping or GetMapping注解进行连接
在这里插入图片描述
代码:

	// 法二:@GetMapping注解实现连接
    @GetMapping(value = {"/getMap"})
    public String getFunc(){
        return "<h1>GetMapping<h1>";
    }

2、获取参数

由于获取参数的内容过多,我单独写了一篇博客:
【SpringMVC如何传递并获取参数?】

3、返回数据

3.1、返回静态页面

返回静态页面后端代码:
在这里插入图片描述

注意:
如果后端接收前端请求的Controller类,注解只有@Controller,那么return的信息会被默认为一个静态页面,如果没有相应的页面,就会出现404。
下图中我在resources的static下添加了html页面,因此启动项目后在浏览器端访问时不是404,而是一个html页面:
在这里插入图片描述
在这里插入图片描述

3.2、返回text/html

理解:要想返回文本文件或者浏览器自动渲染的html语句,有两种设置方法:在接收前端请求的Controller上添加 1>@RestController 2>@Controller+@ResponseBody

返回text/html后端代码:
在这里插入图片描述

注意:我的项目里虽然还存在index.html这个文件,但是使用@Controller+@ResponseBody这两个注解(或组合注解@RestController)后,返回的结果就不再是页面,而是数据(此处是字符串)。如果在后端代码中写的是html语句,浏览器可以将它渲染显示。
在这里插入图片描述

3.3、请求转发或请求重定向

请求转发和请求重定向的区别:
1> 请求方不同:请求转发是服务器端转发;而请求重定向是请求重新从浏览器发送给后端服务器要获取资源。
2> 最终的URL不同:请求转发URL不会发生改变;但是请求重定向URL变成新的请求的URL。
3> 数据共享不同:请求转发是服务器端实现,整个过程中都只有一个request和一个response,转发前后共享资源;而请求重定向是重新从浏览器发送一次新的请求,原来的request和response就相当于作废了,无法再共享。

请求转发后端代码:
在这里插入图片描述

在这里插入图片描述

请求重定向后端代码:
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

1.2 ARCHITECTURE OF A MODERN GPU

图1.2显示了典型的支持CUDA的GPU架构的高级视图。它被组织成一系列高线程的流式多处理器&#xff08;SM&#xff09;。在图中1.2&#xff0c;两个SM构成一个 block。然而&#xff0c;构建块中的SM数量可能因代而异。此外&#xff0c;在图中&#xff0c;每个SM都有多个共享控制逻…

工作中人员离岗识别摄像机

工作中人员离岗识别摄像机是一种基于人工智能技术的智能监控设备&#xff0c;能够实时识别员工离岗状态并进行记录。这种摄像机通常配备了高清摄像头、深度学习算法和数据处理系统&#xff0c;可以精准地监测员工的行为&#xff0c;提高企业的管理效率和安全性。 工作中人员离岗…

医院信息系统集成平台—后台运维管理系统

随着信息化建设的推进,为了让凝聚了巨大人力物力投入的信息基础设施发挥出其效益,保障整个信息系统的平稳可靠运行,需要有一个可从整体上对包括服务器、网络,存储,安全等组件在内的IT基础设施环境进行综合管理的平台,并能够提供业务系统运行异常的实时告警和进行图形化问…

【Python】开始你的Python之旅(Anaconda、Pycharm、Jupyter)

Python工具准备 下载安装AnacondaPycharmJupyter Notebook 启动使用AnacondaPycharmJupyter Notebook 引言&#xff1a; 信息时代&#xff0c;计算机引领。人工智能&#xff0c;Python是基础。信息时代学习好Python乃是在人工智能时代的立足之本。 本文&#xff1a; 做好Pyth…

透明触摸屏展示柜的安装,需要注意什么

透明触摸屏展示柜的安装需要注意以下几个方面&#xff1a; 确定安装位置&#xff1a;选择一个合适的位置&#xff0c;确保展示柜的摆放位置合理&#xff0c;便于观看和管理。同时&#xff0c;要考虑到电源和信号线的连接&#xff0c;以及展示柜与周围环境的协调性。 检查透明触…

MYSQL多种提权方式

&#x1f419;MYSQL-提权条件 - 数据库的最高权限用户的密码 - secure-file-priv没进行目录限制 - 拿下了网站的权限&#xff08;通过webshell或者其他方式&#xff09; - 获取到了数据库的账号密码 &#xff08;获取密码&#xff1a;D:/phpstudy/MySQL/data/mysql/user.MYD…

【数据结构】——期末复习题库(6)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

亚马逊用虚拟信用卡注册可以吗?

很多想做海外广告客户&#xff0c;由于想要投放Google、 Facebook广告&#xff0c;都需要虚拟信用卡&#xff0c;我们对信用卡研究也是有一定深入。但是&#xff0c;当在线购物或者邮件支付时&#xff0c;小伙伴们会担心信息的泄漏&#xff0c;而虚拟信用卡为付款创建了额外的安…

Android 集成vendor下的模块

Android 集成vendor下的模块 &#xff0c;只需要在 PRODUCT_PACKAGES 加上对应的模块名&#xff0c;编译的时候就会执行对应模块的bp文件&#xff0c;集成到系统中 PRODUCT_PACKAGES \WallpaperPicker \Launcher3 \com.nxp.nfc Android11 Framework Vendor下自定义系统…

硬件开发避坑日志

FT232 串口工具会,多发和漏发0x00. 对比之下STC工具更稳定。 红外接收关 5 V 和 3.3V 工作电压的接收波形不一样。 3.3V工作不正常&#xff0c;接收不正常 。 5V工作是标准的NEC协议

一文读懂 $mash 通证 “Fair Launch” 规则(幸运池玩法解读篇)

Solmash 是 Solana 生态中由社区主导的铭文资产 LaunchPad 平台&#xff0c;该平台旨在为 Solana 原生铭文项目&#xff0c;以及通过其合作伙伴 SoBit 跨链桥桥接到 Solana 的 Bitcoin 生态铭文项目提供更广泛的启动机会。有了 Solmash&#xff0c;将会有更多的 Solana 生态的铭…

自制java工具实现 ctrl+c+c 翻译鼠标选中文本

前言 本功能的实现基于这篇笔记 http://t.csdnimg.cn/1I8ln&#xff0c;本文阅读过程中有疑惑都可以查看此笔记 实现思路&#xff1a;检测到按压ctrl c c 后&#xff0c;获取当前剪切板文字&#xff0c;调用百度翻译api。 实现结果&#xff1a; 完整代码在最后 实现过程 1 监控…

文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

一、用go语言&#xff0c;在 RB-INSERT 的第 16 行&#xff0c;将新插人的结点 z 着为红色。注意到&#xff0c;如果将 z 着为黑色&#xff0c;则红黑树的性质4就不会被破坏。那么为什么不选择将 z 着为黑色呢? 文心一言&#xff1a; 在红黑树中&#xff0c;节点被着色为红色…

高可用/高可用的微服务架构设计-资源隔离、限流、熔断、降级、监控

断路器模式 舱壁隔离模式 容错理念 凡是依赖都可能会失败 凡是资源都有限制 CPU/Memory/Threads/Queue 网络并不可靠&#xff0c;延迟是应用稳定性杀手 1 资源隔离 让你的系统里&#xff0c;某一块东西&#xff0c;在故障的情况下&#xff0c;不会耗尽系统所有的资源&#xff0…

(leetcode)判断字符是否唯一 -- 使用位图(位运算)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 本题链接 输入描述 输出描述 算法分析 算法一&#xff1a;哈希表 算法二&#xff1a;位运算(位图) 解题源码 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 接口&#xff1a;bool isUnique(st…

洛谷 P1873 砍树 (二分 简单)

【二分答案】是分治的一种&#xff0c;这类问题很经典&#xff0c;接下来几篇文章会关于二分答案相关的文章&#xff0c;希望同学们可以完成10道以上的【二分答案】相关问题&#xff0c;以此来加深对【二分答案】这类问题的个人理解。 原公众号链接&#xff1a;分治第二讲&…

Vue知识总结-上

VUE初识 Vue是一套用于构建用户界面的渐进式(由只需要轻量小巧的核心库构建的简单应用逐渐扩展为可以引入各式各样的Vue组件构建的复杂应用)JavaScript框架 Vue需掌握的内容&#xff1a;Vue基础、Vue-cli、vue-router、vuex、element-ui、vue3 Vue特点 采用组件化模式、提高代…

AIGC初探:提示工程 Prompt Engineering

简介 提升工程是什么 提示工程&#xff08;Prompt Engineering&#xff09;是人工智能领域中的一个概念&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域中。它是一种通过设计和优化输入提示来提高AI模型表现的方法。 对于基于转换器的大型语言模型&#x…

金智维KRPA问题集锦

KRPA问题集锦 1、打开浏览器错误 &#xff08;1&#xff09;浏览器插件问题&#xff0c;需要正确安装ChromePlug插件&#xff0c; &#xff08;2&#xff09;windows系统下需要正确配置chrome.exe运行环境变量

代码随想录算法训练营第十五天| 二叉树 513. 找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树

513. 找树左下角的值 层序遍历 本题用层序遍历可以直接秒了&#xff0c;直接提取每一层中最左边的元素&#xff08;i0&#xff09;&#xff0c;然后保存到最后一层即可。 class Solution { public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*> que;int…