Spirng MVC——获取参数详解

news2024/9/28 13:18:04

文章目录

  • 1. 什么是 Spirng MVC
    • 1.1 MVC 定义
    • 1.2 MVC 和 Spring MVC 的关系
  • 2. 创建Spring MVC 项目
  • 3. Spring MVC 学习目标
    • 3.1 实现用户和程序的映射
      • 方法1:@RequestMapping("/xxx")
      • 方法2:使用 @POSTMapping("/xxx")
      • 方法3:使用 @GETMapping("/xxx")
    • 3.2 服务器端获取用户请求参数
      • 1. 获取单个参数
      • 2. 获取多个参数
      • 3. 获取对象
      • 4. 后端参数重命名(后端参数映射)@RequestParm
      • 5. 使用 Postman 模拟发送 JSON 数据给服务器
      • 6. 获取 URL 地址中的参数
      • 7. 使用 Postman 模拟上传文件
      • 优化 和 注意事项:
        • 扩展:不同运行平台的配置文件设置和读取
      • 优化后使用 Postman 上传文件
    • 3.3 获取Cookie/Session/header
    • 1. 获取 Cookie
      • 1.1 servler 获取 Cookie 的方法
      • 1.2 使用 @CookieValue("xxx")
    • 2. 获取 Header(请求头)里面的信息
      • 2.1 方法1:使用 Servlet 获取 Header
      • 2.2 方法2: 使用 @RequestHeader("key")来获取 Header
    • 3. 存储和获取 Seesion
      • 3.1 先存储 Seesion
      • 3.2 获取 Seesion 方法一
      • 3.3 获取 Seesion 方法二
  • tips:关于 idea 文件夹展开问题

1. 什么是 Spirng MVC

Spring MVC 是一个基于 MVC 设计模式 和 Servlet API 实现的 Web 项目,同时 Spring MVC 又是 Spring 框架中的一个 WEB 模块,它是随着 Spring 的诞生而存在的一个框架。

1.1 MVC 定义

MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构模式,它把软件系统(项目)分为 模型,视图和控制器 三个基本部分。

在这里插入图片描述

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

1.2 MVC 和 Spring MVC 的关系

MVC 是一种设计思想,而 Spring MVC 是一种具体的实现框架。

2. 创建Spring MVC 项目

基于Spirng Boot 框架添加一个 Spring Web(它使用的就是 Spring MVC)依赖,此时项目就变成了 Spring MVC 项目

在这里插入图片描述

在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述

3. Spring MVC 学习目标

3.1 实现用户和程序的映射

在浏览器 输入 URL 地址之后,能够在程序中匹配到相应方法

方法1:@RequestMapping(“/xxx”)

在这里插入图片描述

@RequesMapping 特征:

1.@RequestMapping 既可以修饰类(可选)也能修饰方法
2.默认情况下 @RequestMapping 既支持 POST 请求,也支持 GET 请求

@RequsetMapping 参数拓展:

在这里插入图片描述

方法2:使用 @POSTMapping(“/xxx”)

只支持 POST 类型的访问方式:

在这里插入图片描述

在这里插入图片描述

方法3:使用 @GETMapping(“/xxx”)

只支持 GET 类型的访问形式:
在这里插入图片描述

3.2 服务器端获取用户请求参数

1. 获取单个参数

先创建个实体类,我们要获取实体类中的信息:

在这里插入图片描述

获取单个参数:

在这里插入图片描述

在URL 中 不输入 id ,结果如下:

在这里插入图片描述

输入 id 结果如下:

在这里插入图片描述

前端输入 参数名 和 后端的不一致,结果如下:

在这里插入图片描述

2. 获取多个参数

在这里插入图片描述

当输入 username 和 password 为空时,结果如下:

在这里插入图片描述

当手动输入 username 和 password 结果如下:

在这里插入图片描述

3. 获取对象

在这里插入图片描述

不传参结果如下:

在这里插入图片描述

传参结果如下:

在这里插入图片描述

4. 后端参数重命名(后端参数映射)@RequestParm

某些特殊的情况下前端传递的 key 和我们后端接收的 key 可以不一致,比如前端传递了一个name 给后端,而后端又是有 username 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用 @RequestParam 来重命名前后端的参数值,将前端传递的 name 重命名为 username

具体代码如下:

1.当我们前端传递的 key 为 username 时候,后端能够接收到,具体如下:

在这里插入图片描述

2.当我们前端传递的 key 为 name(与后端不一致) 时候,后端是无法接收到前端传递过来的参数的,具体如下:
在这里插入图片描述
3.为了解决这个问题,我们使用 @RequestParm 来重命名

在这里插入图片描述

注意:

如果在参数中添加 @RequestParam 注解,那么前端一定要传递此参数,否则就会报错,如果想要解决此问题,可以给 @RequestParam 里面添加 required = false

当前端不传递 此参数 如下:

在这里插入图片描述

当我们不使用 @RequestPrarm 之后,此处不传,也不会报错

在这里插入图片描述

当我们不传递,但是又不想报错时候,需要加上 required = false,如下:

在这里插入图片描述

5. 使用 Postman 模拟发送 JSON 数据给服务器

使用 Postman 模拟发送 JSON 数据给服务器,如下:

在这里插入图片描述
我们发现 后端并不能接收 json 的数据:

在这里插入图片描述
使用 Fiddler 抓包,查看 请求:

在这里插入图片描述

查看响应:

在这里插入图片描述
我们发现响应正文中并没有我们发送的 json 数据

服务器端实现 JSON 数据的接收需要使用 @RequestBody 注解

在这里插入图片描述

此时我们在去使用 Postman 来模拟发送 json 数据,这个时候,后端就能接收到 json 数据了

在这里插入图片描述

6. 获取 URL 地址中的参数

我们先来看一下 URL 的组成:

在这里插入图片描述
比如给出一段 URL,我们 改 如何 获取 URL地址中的参数呢?

localhost:8080/user/hero/66/影魔

在这里插入图片描述

7. 使用 Postman 模拟上传文件

  1. 上传文件使用到的注解为: @RequestPart(“前端传递的名称”),使用 MultipartFile 接收

在这里插入图片描述

2.使用 Postman 发送请求,验证是否上传成功
在这里插入图片描述
3.打开文件夹查看是否成功
在这里插入图片描述
ok 没问题,美美哒~
在这里插入图片描述

优化 和 注意事项:

刚刚的代码我们是把上传图片的名称写固定了的,如果我们上传其他的图片,名称也是我们写固定了的,所以我们要进行优化!

扩展:不同运行平台的配置文件设置和读取

1.新建不同平台的配置文件

命名规则:application-平台.yml(properties)

application.yml 主配置文件
application-dev.yml 代表 开发环境 平台
application-prod.yml 代表 生产环境 平台

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.在主配置文件中设置配置的运行文件

在这里插入图片描述

3.读取不同平台的配置文件
在这里插入图片描述

结果如下:

在这里插入图片描述

优化后使用 Postman 上传文件

在这里插入图片描述
在这里插入图片描述

利用 Postman 尝试一下:

在这里插入图片描述

结果如图:

在这里插入图片描述

3.3 获取Cookie/Session/header

1. 获取 Cookie

1.1 servler 获取 Cookie 的方法

在这里插入图片描述

1.2 使用 @CookieValue(“xxx”)

在这里插入图片描述

结果如下:

在这里插入图片描述

2. 获取 Header(请求头)里面的信息

2.1 方法1:使用 Servlet 获取 Header

在这里插入图片描述

2.2 方法2: 使用 @RequestHeader(“key”)来获取 Header

在这里插入图片描述

3. 存储和获取 Seesion

存储的方式只有一种,但是获取的方式有两种:

在这里插入图片描述

3.1 先存储 Seesion

Servlet 和 SpringMVC 操作方式是一样的

在这里插入图片描述

在这里插入图片描述

3.2 获取 Seesion 方法一

Servlet 模式获取:

在这里插入图片描述

3.3 获取 Seesion 方法二

在这里插入图片描述

tips:关于 idea 文件夹展开问题

在这里插入图片描述


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

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

相关文章

Kali生成windows木马程序

目录 一、生成windows执行木马程序 二、进入msfconsole进行监听目标上线 三、目标运行木马和后渗透 四、问题 Meterpreter session 2 closed. Reason: Died 一、生成windows执行木马程序 -p windows/x64/meterpreter/reverse_tcp //载入64位payload攻击载荷&#xff0c…

RabbitMQ-惰性队列

文章目录1 消息堆积问题2 惰性队列2.1 基于命令行设置lazy-queue2.2 基于Bean声明LazyQueue(推荐)2.3 基于RabbitListener声明LazyQueue3 总结3.1 消息堆积问题的解决方案?3.2 惰性队列的优点有哪些?3.3 惰性队列的缺点有哪些?1 消息堆积问题…

BSA-maltose 牛血清白蛋白修饰麦芽糖 BSA-麦芽糖

产品名称:牛血清白蛋白修饰麦芽糖 英文名称:BSA-maltose 用途:科研 状态:固体/粉末/溶液 产品规格:1g/5g/10g 保存:冷藏 储藏条件:-20℃ 储存时间:1年 牛血清中的简单蛋白&#xff…

JAVA数据类型与变量

JAVA初阶 背景了解 Java语言之父—>高斯林。现代计算机之父—>冯诺依曼。 Java当中的main方法。 .java ->编译javac xxx.java -> xxx.class[字节码文件:二进制文件]。java命令 运行java程序 public class HelloWorld {//m main psvm 出现之后回车即可…

Qt第二十七章:QWidget、QMainWindow自定义标题栏并自由移动缩放

前提:UI必須采用自适应布局。 自定义组件【直接CV】custom_components.py from PySide6 import QtGui, QtWidgets, QtCore from PySide6.QtCore import Qt, QSize, QRect from PySide6.QtWidgets import QPushButton, QLabel, QWidgetclass QCustomTitleBar:def _…

基于SpringBoot vue的茶叶商城平台源码和论文含支付宝沙箱支付

此项目是前后端分离的 后台项目:shop 前端项目:Vue-shop 后端项目启动步骤: 1.先把sql导入数据库 2.把后台项目导入编辑器 3.修改数据库配置 4.启动项目 前端项目启动步骤: 1.打开Vue-shop目录,在这个文件夹里面加入cmd目录窗口 2.运行启动vue项目目录(需先安装nodejs软件)…

四、伊森商城 前端基础-Vue 双向绑定事件处理安装插件 p22

1、双向绑定 双向绑定: 效果:我们修改表单项,num 会发生变化。我们修改 num,表单项也会发生变化。为了实 时观察到这个变化,我们将 num 输出到页面。 我们不需要关注他们为什么会建立起来关联,以及页面如何…

Java面向对象三大特性:继承、封装、多态

java封装、继承、多态笔记 1.包 1.包的命名规则 (1)只能包含数字、字母、下划线、小圆点. (2)不能用数字开头, (3)不能是关键字或保留字 例如: demo.class.exec1 //错误class…

Redis学习笔记(三)

Jedis java语言连接redis工具准备工作 下载地址&#xff1a;https://mvnrepository.com/artifact/redis.clients/jedis基于maven <dependency> <groupId> redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</versi…

【面试题】面试官:你能自己实现一个async await吗?

开启掘金成长之旅&#xff01;这是我参与「掘金日新计划 12 月更文挑战」的第3天(点击查看活动详情) 相信大家对于Promise都不再陌生了&#xff0c;简易版的Promise对象源码我们也手撕过一次了&#xff0c;那接下来我们聊聊Promise的语法糖async-await&#xff0c;那让我们从…

【JavaWeb】第六章 xml

文章目录1、XML简介2、xml语法3、xml解析4、Dom4j类库的使用5、dom4j解析xml1、XML简介 xml是可扩展的标记性语言&#xff0c;xml的主要作用有&#xff1a; 用来保存数据&#xff0c;而且这些数据具有自我描述性 做为项目或者模块的配置文件做为网络传输数据的格式&#xff0…

QML 如何显示文本?Text可以有多少功能?

目录1.如何显示文本&#xff1f;2. Text有哪些主要功能&#xff1f;2.1 基本属性示例2.2 字重属性2.3 字体样式2.4 字体上标下标支持2.5 富文本2.6 文字换行 缩略1.如何显示文本&#xff1f; Text {font.pixelSize: 20; text: "这是20普通文字"} //一行即可以上代码…

12.2排序

目录 0.做题的失误 1.引用传值和传址 1.斐波那契数列 一.快速排序 1.挖坑法 2.优化 2.1 随机取数法 2.2 三数取中法 2.3把基准值相同的值移到基准旁边 2.4引用直接插入排序 3.Hoare 法: 4.非递归法 5.总结 二,归并排序 1.原理 2.代码实现 3.分析 4.非递归 5…

Git(第一篇)——Git的下载与安装(史上最全最详细)

Git&#xff08;第一篇&#xff09;——Git的下载与安装&#xff08;史上最全最详细&#xff09; 目录Git&#xff08;第一篇&#xff09;——Git的下载与安装&#xff08;史上最全最详细&#xff09;git的下载git的安装git的下载 如果你还没有下载Git&#xff0c;可直接到git…

什么是数据管理能力成熟度评估(DCMM)

GB/T 36073-2018 《数据管理能力成熟度评估模型》&#xff08;Data Management Capability Maturity Assessment Model&#xff0c;简称&#xff1a;DCMM&#xff09;是我国数据管理领域首个国家标准。该标准将组织对象的数据管理划分为八大能力域&#xff08;数据战略、数据治…

【Hbase】第一章——从原理剖析

文章目录1. HBase的实现原理1.1 HBase功能组件1.2 表和Region1.3 Region的定位2. HBase运行机制2.1 HBase系统架构2.2 Region服务器工作原理2.3 Store工作原理2.4 HLog工作原理3. HBase应用方案3.1 HBase实际应用中的性能优化方法3.2 HBase性能监视3.3 在HBase之上构建SQL引擎3…

【图像压缩】DCT图像无损压缩【含GUI Matlab源码 726期】

⛄一、DCT图像无损压缩简介 1 图像压缩 图像压缩按照压缩过程中是否有信息的损失以及解压后与原始图像是否有误差可以分为无损压缩和有损压缩两大类。无损压缩是指不损失图像质量的压缩&#xff0c;它是对文件的存储方式进行优化&#xff0c;采用某种算法表示重复的数据信息&a…

关于Jetpack Compose的初步使用、学习和总结

初步使用和学习ComposeJetpack Compose简要介绍创建一个Jetpack Compose项目自定义组合函数MessageCard通过修饰符&#xff0c;进一步改善布局为什么使用ComposeCompose 与 XML总结与期望Jetpack Compose 简要介绍 根据developers上的介绍&#xff0c;Jetpack Compose 是推荐…

【3D目标检测】Rethinking Pseudo-LiDAR Representation

目录概述细节证明基于伪点云的3D目标检测算法效果好的原因并不是伪点云这种数据表示基于深度图的图像表示的算法PatchNet证明基于伪点云的3D目标检测算法效果好的原因是从图像到点云坐标系转换的过程概述 本文是基于图像的3D目标检测算法。 贡献&#xff1a; 作者认为基于伪点…

开放式运动耳机排行榜,排行靠前的五款高性能耳机分享

智能产品的发展迅猛&#xff0c;作为生活必需品的耳机&#xff0c;更是在不断的更新&#xff0c;尤其是对于运动爱好者而言&#xff0c;以往的入耳式蓝牙耳机存在汗渍入耳等问题。而为了有效解决这一些列问题&#xff0c;新型的骨传导耳机随之诞生了&#xff0c;相比入耳式的蓝…