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

【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;
}

相关文章:

【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是构建于…...

MES系统的功能清单

MES系统的功能清单 一、生产计划管理 1. 订单和生产计划制定:根据客户需求和市场状况,制定生产计划和订单,确保生产资源的合理分配和生产进度的有效管理。 2. 生产排程:根据生产计划和订单,结合设备、人员、物料等资…...

docker 安装elasticsearch集群

准备工作 docker 安装好,docker compose 安装好编辑好docker-compose.yml文件(本文会提供)生成elastic-certificates.p12密钥,与docker-compose文件在同一个目录(本文会介绍生成方式)准备elasticsearch配置…...

Spring Boot 3 + Spring Security 6 最新版本修改 Json 登录后 RememberMe 功能问题失效的解决方案

当 Spring Boot 版本更新到 3 之后,最低要求的 JDK 版本变为 17,相应的 最新版本的 Spring Security 的配置也发生了变化,一下主要讲解一些新的 Spring Security 的配置方法 1. 配置由继承WebSeucrityConfigurerAdapter变成只需添加一个Secur…...

Java核心知识点整理大全21-笔记

目录 18.1.5.1. upstream_module 和健康检测 18.1.5.1. proxy_pass 请求转发 18.1.6. HAProxy 19. 数据库 19.1.1. 存储引擎 19.1.1.1. 概念 19.1.1.2. InnoDB(B树) 适用场景: 19.1.1.3. TokuDB(Fractal Tree-节点带数据&…...

Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举

Redis 主从挂载后的内核数据结构分析 主节点中,会通过 clusteNode 中的 slaves 来记录该主节点包含了哪些从节点,这个 slaves 是一个指向 *clusterNode[] 数组的数据结构从节点中,会通过 clusterNode 中的 slaveof 来记录该从节点属于哪个主…...

java中BigDecimal的介绍及使用(二)

系列文章目录 java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题java中BigDecimal的介绍及使用(二) 文章目录 系列文章目录一、前言二、BigDecimal提供的方法2.1、stripTrailingZeros() 去除小数尾部所有的02.2、int signum()2.3、int…...

NX二次开发UF_MTX3_identity 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_MTX3_identity Defined in: uf_mtx.h void UF_MTX3_identity(double identity_mtx [ 9 ] ) overview 概述 Returns a 3 x 3 identity matrix. 返回一个3 x 3的单位矩阵。 UFUN…...

解决Hadoop DataNode ‘Incompatible clusterIDs‘报错

问题 启动hadoop时报错Failed to add storage directory 2023-11-26 12:02:06,840 WARN common.Storage: Failed to add storage directory [DISK]file:xxx java.io.IOException: Incompatible clusterIDs in xxx/dfs/data: namenode clusterID CID-xxxxxx; datanode cluste…...

计算机毕业设计|基于SpringBoot+MyBatis框架的电脑商城的设计与实现(系统概述与环境搭建)

计算机毕业设计|基于SpringBootMyBatis框架的电脑商城的设计与实现(系统概述与环境搭建) 该项目分析着重于设计和实现基于SpringBootMyBatis框架的电脑商城。首先,通过深入分析项目所需数据,包括用户、商品、商品类别、收藏、订单…...

神器!使用 patchworklib 库进行多图排版真棒啊

如果想把多个图合并放在一个图里,如图,该如何实现 好在R语言 和 Python 都有对应的解决方案, 分别是patchwork包和patchworklib库。 推介1 我们打造了《100个超强算法模型》,特点:从0到1轻松学习,原理、…...

MySQL -DDL 及表类型

DDL 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1.CHARACTER SET&#xff1a…...

主从同步机制

RocketMQ的Broker分为Master和Slave两个角色,为了保证高可用性,Master角色的机器接收到消息后,要把内容同步到Slave机器上,这样一旦Master宕机,Slave机器依然可以提供服务。下面分析Master和Slave角色机器间同步功能实…...

Leetcode算法系列| 3. 无重复字符的最长子串

目录 1.题目2.题解C# 解法一:滑动窗口算法C# 解法二:索引寻找Java 解法一:滑动窗口算法Java 解法二:遍历字符串 1.题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例1: 输入: s "ab…...

Spring Cache(缓存框架)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...

android开发:安卓13Wifi和热点查看与设置功能

近日对安卓热点功能做了一些技术验证,目的是想利用手机开热点给设备做初始化,用的是安卓13,简言之: 热点设置功能不可用,不可设置SSID和密码,不可程序控制开启关闭,网上的代码统统都过时了Loca…...

Java中的mysql——面试题+答案——第24期

当涉及MySQL时,面试题可以涵盖更多高级主题、安全性和实践经验。 MySQL中的存储引擎InnoDB和MyISAM的区别是什么? 答案: InnoDB支持事务,而MyISAM不支持。InnoDB使用行级锁,而MyISAM使用表级锁。InnoDB支持外键&#x…...

王者小游戏

游戏里的经验动物 Bear package beast; import sxt.GameFrame; public class Bear extends Beast {public Bear(int x, int y, GameFrame gameFrame) {super(x, y, gameFrame);setImg("C:\\Users\\辛欣\\OneDrive\\桌面\\王者荣耀图片(1)\\王者荣耀图片\\beast\\bear.jp…...

using meta-SQL 使用元SQL

%DatePart Syntax %DatePart(DTTM_Column) Description The %DatePart meta-SQL variable returns the date portion of the specified DateTime column. DatePart meta-SQL变量返回指定的DateTime列的日期部分。 Note: This meta-SQL variable is not implemented for COBOL. …...

函数式接口

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 咱们今天讨论下函数式接…...

解密高效网络监控:专业级开源测速工具实战指南

解密高效网络监控:专业级开源测速工具实战指南 【免费下载链接】Speed-Test SpeedTest by OpenSpeedTest™ is a Free and Open-Source HTML5 Network Performance Estimation Tool Written in Vanilla Javascript and only uses built-in Web APIs like XMLHttpReq…...

DAMO-YOLO TinyNAS模型评估全攻略:mAP/PR曲线

DAMO-YOLO TinyNAS模型评估全攻略:mAP/PR曲线 1. 为什么模型评估比训练更重要 刚跑通DAMO-YOLO TinyNAS的训练流程时,很多人会直接跳到部署环节,觉得“能出结果就行”。但实际项目中,我见过太多团队在交付前才发现模型在真实场景…...

课题申请:如何预判评审潜台词并从容应对?

在基金申报的激烈竞争中,许多科研人员常常陷入一个误区:将申请书单纯地视为一份“任务说明书”。我们习惯于在文中详细罗列“要做什么”、“打算怎么做”,却往往忽略了评审专家在阅读时的心理活动。当一份申请书只停留在陈述层面,…...

BepInEx插件框架:5分钟掌握Unity游戏模组开发与注入技术

BepInEx插件框架:5分钟掌握Unity游戏模组开发与注入技术 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 如果你热爱Unity游戏并希望为它们添加自定义功能,B…...

FREE!ship Plus终极指南:免费开源船舶设计软件完整教程

FREE!ship Plus终极指南:免费开源船舶设计软件完整教程 【免费下载链接】freeship-plus-in-lazarus FreeShip Plus in Lazarus 项目地址: https://gitcode.com/gh_mirrors/fr/freeship-plus-in-lazarus 想要设计专业的船舶模型却苦于高昂的软件费用&#xff…...

深度解析glogg:5个步骤掌握专业级跨平台日志分析工具实战指南

深度解析glogg:5个步骤掌握专业级跨平台日志分析工具实战指南 【免费下载链接】glogg A fast, advanced log explorer. 项目地址: https://gitcode.com/gh_mirrors/gl/glogg glogg是一款专为开发者和系统管理员设计的跨平台GUI日志查看器,它巧妙地…...

LibreDWG:免费开源的DWG文件转换终极解决方案

LibreDWG:免费开源的DWG文件转换终极解决方案 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 你是否经常遇到CAD设计文件格式不兼容的问题&…...

Fluent计算总发散?别急着重画网格,先检查这5个隐藏设置(附诊断命令)

Fluent计算总发散?别急着重画网格,先检查这5个隐藏设置(附诊断命令) 凌晨三点,屏幕上的残差曲线突然像过山车一样飙升,你盯着"floating point exception"的报错提示,咖啡杯悬在半空—…...

像素史诗·智识终端Web应用开发全栈指南:从后端API到前端交互

像素史诗智识终端Web应用开发全栈指南:从后端API到前端交互 1. 项目概述与核心价值 在当今AI技术快速落地的背景下,如何将强大的AI能力整合到Web应用中成为开发者关注的重点。本文将完整演示如何以像素史诗智识终端为AI引擎,开发一个具备聊…...

Wonder3D:2-3分钟从单张图片生成高质量3D模型的完整指南

Wonder3D:2-3分钟从单张图片生成高质量3D模型的完整指南 【免费下载链接】Wonder3D Single Image to 3D using Cross-Domain Diffusion for 3D Generation 项目地址: https://gitcode.com/gh_mirrors/wo/Wonder3D 单图生成3D模型一直是计算机视觉领域的挑战性…...