【Java Spring】Spring MVC基础

文章目录

    • 1、Spring MVC 简介
    • 2、Spring MVC 功能
      • 1.1 Spring MVC 连接功能
      • 2.2 Spring MVC 获取参数
        • 2.2.1 获取变量
        • 2.2.2 获取对象
        • 2.2.3 @RequestParam重命名后端参数
        • 2.2.4 @RequestBody 接收Json对象
        • 2.2.5 @PathVariable从URL中获取参数

1、Spring MVC 简介

Spring Web MVC是构建于Servlet API构建的Web框架,来自于Spring webMVC模块, MVC是model View Controller的缩写,是软件工程中的一种软件架构模式,它把软件系统分为模型,视图,控制器三个基本部分

  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据
  • View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的
  • Controller(控制器)是应用程序中处理用户交互的部分,通常控制器。通常控制器负责从视图中读取数据,控制用户输入,并向模型发送数据

2、Spring MVC 功能

学习Spring MVC,需要掌握三个功能

1、连接的功能:将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用到我们的Spring程序

2、获取参数的功能:用户访问的时候会带一些参数,在程序中需要想办法获取到参数

3、输出数据的功能:执行了业务逻辑后,将程序执行的结果返回给用户

对于Spring MVC来说,掌握了以上3个功能就相当于掌握了Spring MVC

SSM项目 = Spring + Spring MVC + MyBatis

1.1 Spring MVC 连接功能

// @Controller                 // 让框架启动的时候自动加载当前类
// @ResponseBody               // 告知返回结果是数据
@RequestMapping("/test")  // 路由注册, 浏览器获取前端接口和后端程序连接功能实现(支持GET,POST)
@RestController  // 等于 ResponseBody + Controller
public class TestController {@RequestMapping("/hi")public String sayHi() {return "hi, Spring MVC";}
}

指定路由接收请求的方法

public class TestController {// 目标,只支持POST请求// 方法一、设置RequestMapping method属性// @RequestMapping(value = "/hi", method = RequestMethod.POST)// 方法二、使用@PostMapping@PostMapping("hi")public String sayHi() {return "hi, Spring MVC";}
}

2.2 Spring MVC 获取参数

传参数注意事项:在SpringMVC中传递参数一定要使用包装类型,而非基础类型。如果设置为基础类型,忘记传递该参数,使用基础类型会直接报错(程序500),而使用包装类型不会报错,只是值为null

2.2.1 获取变量
@RequestMapping("/test")  // 路由注册
@RestController  // 等于 ResponseBody + Controller
public class TestController {@GetMapping("/hi")public String sayHi(String name) {return "Hi + " + name;}
}
2.2.2 获取对象
localhost:8080/test/show-user?id=1&name=张三&age=123
@GetMapping("/show-user")
public String showUser(User user) {return user.toString();
}
2.2.3 @RequestParam重命名后端参数

前端传递的参数key和我们后端接收的key可以不一致,比如前端传递了一个time,而后端想要使用createtime字段来接收,这样就会出现参数不匹配导致后端接受不到前端数据

可以使用@RequestParam来重命名前后端的数据

@GetMapping("/show-time")
public String showTime(@RequestParam("t") String startTime, @RequestParam("t2") String endTime) {return "开始时间:" + startTime + "结束时间:" + endTime;
}

需要注意使用@RequestParam注解自带一个required属性,被设置的参数将会被默认设置成必传的,可以通过给@RequestParam注解设置false属性进行取消

@RequestParam(value = "t", required = false)  // @RequestParam 注解设置required 属性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2.4 @RequestBody 接收Json对象

PostMan构建携带Json对象的请求:在Body中选择原生模式,然后选择数据类型为Json

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@RequestBody会接收请求的正文(POST方法),将其中的数据交给接收的对象

// 接收Json对象,场景:和第三方系统进行通信时常见场景
@PostMapping("/show-user")
public String showUser(@RequestBody User user) {return user.toString();
}
2.2.5 @PathVariable从URL中获取参数

直接从URL中获取参数

@PostMapping("/logon/{name}/{password}")
public String logon(@PathVariable("name") String name, @PathVariable(password) String password) {return name + ":" + password;
}

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

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

相关文章

SEAM-STRESS

模型 PCM means ‘Pixel Correlation Module’ 辅助信息 作者未提供代码

jetson nano 串口通信

目录 1.UART通信介绍 2.电脑端准备工作 2.1 安装串口调试助手 2.2 硬件接线 3.Jetson Nano端准备工作 3.1安装库文件 3.2修改主板上电启动串口权限 4.示例程序-发送及接收 4.1 开启串口调试助手 4.2 导入示例程序 4.3 执行程序 4.4 查看效果 4.4.1 串口调试端 4.4…

深入理解强化学习——马尔可夫决策过程:备份图(Backup Diagram)

分类目录:《深入理解强化学习》总目录 在本文中,我们将介绍备份(Backup)的概念。备份类似于自举之间的迭代关系,对于某一个状态,它的当前价值是与它的未来价值线性相关的。 我们将与下图类似的图称为备份图…

NX二次开发UF_MTX3_vec_multiply_t 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_vec_multiply_t Defined in: uf_mtx.h void UF_MTX3_vec_multiply_t(const double vec [ 3 ] , const double mtx [ 9 ] , double vec_product [ 3 ] ) overview 概述 Ret…

rabbitMQ对优先级队列的使用

注意事项: 1.队列设置优先级 权制范围(0-255)推荐0-10 否则浪费CPU与内存 2.发消息时给消息设置优先级 3.消息需要完全事先在队列中,在被消费者消费 会被排序,否则边生产边消费不会达到预期的队列优先效果。 优先级队列…

plotneuralnet和netron结合绘制模型架构图

plotneuralnet和netron结合绘制模型架构图 一、plotneuralnet 本身的操作 模型结构图的可视化,能直观展示模型的结构以及各个模块之间的关系。最近借助plotneuralnet python库(windows版)绘制了一个网络结构图,有一些经验和心得…

Anolis 安装 Conda 和 YoloV8

Anolis 安装 Conda 和 YoloV8 一 Conda 和 YoloV8 安装1.Conda 下载与安装2.YoloV8 安装 二.测试 一 Conda 和 YoloV8 安装 ## 1. anolis 安装 cv2 依赖库 yum install -y mesa-libGL.x86_64 ## Anaconda https://repo.anaconda.com/archive/ ## 重启终端查看版本 conda --ver…

如何应对雨天飞行的挑战?无人机机库防护能力解析

一、 背景介绍 无人机机库是无人机停放和起降场所,类似传统飞机的 hangar(飞机库)。它是一个专门用于存储、维护和保护无人机的设施。无人机机库的存在有助于提高无人机的安全性,同时也为无人机提供了一个有序的管理场所。 雨天…

Matplotlib图表定制:多子图和多图形展示

Matplotlib允许用户在同一图表中创建多个子图,以及在同一图表中显示多个图形。 在本篇文章中,我们将详细介绍这两种功能,并通过案例演示,帮助你更好地利用Matplotlib进行图表定制。 1、创建包含多个子图的图表 Matplotlib提供了…

2022年03月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共10题,每题2分,共30分) 第1题 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数?注意:每一位都不相同,最高位不能为0。 A:720 B:360 C:312 D:88 答案:C 逻辑知识单选题 第2题 运行以下程…

Go 接口:nil接口为什么不等于nil?

一、Go 接口的地位 Go 语言核心团队的技术负责人 Russ Cox 也曾说过这样一句话:“如果要从 Go 语言中挑选出一个特性放入其他语言,我会选择接口”,这句话足以说明接口这一语法特性在这位 Go 语言大神心目中的地位。 为什么接口在 Go 中有这么…

pycharm全网最新安装教程(附加activation code),支持2018-2023版本

官网地址Download PyCharm: Python IDE for Professional Developers by JetBrains 下载的话无脑下载安装即可! 2018.2~2023版本用这个,最新的activation code码 2018.1以下版本用这个 老是审核不通过只能贴图片了(T-T)

matlab频谱合成音乐《追光者》

选择你喜欢的一首钢琴曲,下载并分析曲谱,用matlab工具用频谱合成方法完成这首曲子的音乐合成。 前言:此文章为个人使用Matlab合成一首《追光者》音乐,且带混响和声效果 文章目录 一.题目二.要求三.课程设计目的四.概要设计五.详细…

解锁领先的有限元分析软件ABAQUS:不同版本功能特点及价格

随着科学技术的飞速发展,工程领域对于高效可靠的仿真软件需求日益增长。ABAQUS作为有限元分析领域的佼佼者,为工程师提供了强大而灵活的工具,用于模拟和分析复杂的结构和材料行为。本文将深入介绍ABAQUS的概念、不同版本的特点、功能区别、定…

vue3默认插槽、具名插槽以及作用域插槽实现父子组件通信

默认插槽与具名插槽 父组件 <template><div><h1>我是父组件</h1><child><div style"color: red">我是从父元素插入的值(默认插槽)</div><template #juming><div style"color: green">我是从父元素…

11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)

如果left<right&#xff0c;就表明其之间还有元素&#xff0c;即左右指针重合&#xff0c;区间只有一个元素也被包含其中&#xff1b; left<right,就表明递归过程中&#xff0c;只允许区间有两个及以上的元素&#xff0c;不允许区间只有一个元素&#xff0c;那么对应地&…

AB|如何正确从罗克韦尔官网下载资料?

哈喽呀&#xff0c;大家好&#xff0c;我是雷工&#xff01; 作为工控行业的从业者&#xff0c;可能要和各个厂家的中控系统、PLC、触摸屏、变频器、等软硬件产品打交道。 虽然从业十余年&#xff0c;但也不可能接触使用过所有的工控产品。还有海量的产品是没有接触过的。 但很…

Programming Abstractions in C阅读笔记:p202-p234

《Programming Abstractions in C》学习第65天&#xff0c;p202-p234总结。 一、技术总结 完成第五章学习&#xff0c;第五章介绍递归在实际问题中的进一步应用&#xff0c;例如汉诺塔问题&#xff0c;数学中的排列问题&#xff0c;更有难度。使用递归解决问题时有时候需要借…

TOD和PPS精确时间同步技术

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术&#xff0c;它们在许多领域都有广泛的应用&#xff0c;总的来说&#xff0c;PPS和TOD被广泛应用于各种需要高度精确时间同步的领域&#xff0c;包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…

【专题】支持向量机(Support Vector Machines,SVM)

​​​​​ ​​ 支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种强大的监督学习模型&#xff0c;常用于分类、回归和异常值检测任务。它的核心思想是通过构建一个最大间隔超平面来有效地分隔不同类别的数据点。 在SVM中&#xff0c;数据点…