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

SpringMVC(三)请求

目录

一、RequestMapping注解

1.RequestMapping的属性

实例

1.在这里创建文件,命名为Test:

2.复现-返回一个页面:

创建test界面(随便写点什么):

Test文件中编写:

​编辑 运行:

3.不返回界面,返回字符串:

编辑Test文件:​编辑

实现这两个小功能后的完整的Test:

2.RequestMapping的请求参数绑定

3.入参情况

1.请求携带一个参数:

2.请求携带两个入参

 3.(两个及以上)可以以对象的形式传参

4.杂糅传参

 5.用form表单的形式提交

二、不常用的注解

1.RequestParam注解


经过前面对SpringMVC的配置和原理的讲解,接着进行SpringMVC请求的相关讲解。

一、RequestMapping注解

RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系

RequestMapping注解可以作用在方法和类上

1. 作用在类上:第一级的访问目录

2. 作用在方法上:第二级的访问目录

3. 细节:路径可以不编写 / 表示应用的根目录开始

1.RequestMapping的属性

1. path 指定请求路径的url

2. value value属性和path属性是一样的

3. mthod 指定该方法的请求方式(通常是GET和POST请求,默认GET请求)

现在以实例的形式进行讲解:

实例

1.在这里创建文件,命名为Test:

2.复现-返回一个页面:

在里面写一个方法test1--表示返回一个名为test的界面(既然这里return用了,那么就要保证html中当真存在这么一个方法--去创建)

创建test界面(随便写点什么):

Test文件中编写:
 运行:

注意这里项目名称后的一级请求/二级请求,返回test.html界面内容(中文乱码,正常)

3.不返回界面,返回字符串:
编辑Test文件:

更改后端就要重启服务器:

同样步骤得到(这里显示的就是String字符串而非界面了):

实现这两个小功能后的完整的Test:

package controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller //首先先打上注解-创建对象并且标明这里是Controller层
@RequestMapping(path="/test") //一级请求路径(写不写/都无所谓)
public class Test {/*** /role/save* method="当前方法允许请求方式能访问"* params="请求路径上传参数"* @return*///打开页面的请求对应@RequestMapping(path="/t1",method={RequestMethod.GET}) //二级请求路径//这里指定了方法为GET(默认是GET),除此之外还有POST等等public String test1(){return "test";}//返回字符串@ResponseBody@RequestMapping(path="/t2")public String test2(){return "hello!";}}

2.RequestMapping的请求参数绑定

(1). 绑定机制

1. 表单提交的数据都是k=v格式的 username=haha&password=123

2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的

3. 要求:提交表单的name和参数的名称是相同的

(2). 支持的数据类型

1. 基本数据类型和字符串类型

2. 实体类型(JavaBean)

3. 集合数据类型(List、map集合等)

基本数据类型和字符串类型

1. 提交表单的name和参数的名称是相同的

2. 区分大小写

实体类型(JavaBean)

1. 提交表单的name和JavaBean中的属性名称需要一致

2. 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name

给集合属性数据封装

1. JSP页面编写方式:list[0].属性

3.入参情况

1.请求携带一个参数:

这里给出一个例子(同样这个例子是写在Test文件中的):

//一个入参时@ResponseBody@RequestMapping(path="/t3",method={RequestMethod.GET}) //二级请求路径public String test3(String name){return name;}

重启服务器:

 将入参携带在请求中:

2.请求携带两个入参

这里给出一个例子(同样这个例子是写在Test文件中的):

 //两个及以上不同类型入参@ResponseBody@RequestMapping(path="/t4",method={RequestMethod.GET}) //二级请求路径public String test4(String name,Integer age,char sex){return "name="+name+"age="+age+"sex="+sex;}

重启服务器:

将入参携带在请求中:

 3.(两个及以上)可以以对象的形式传参

创建User类(生成get和set方法):

这里给出一个例子(同样这个例子是写在Test文件中的):

//对象的形式传参@ResponseBody@RequestMapping(path="/t5",method={RequestMethod.GET}) //二级请求路径public String test5(User user){return user.toString();}

重启服务器:

 将入参携带在请求中:

这里就会遵循对象的原则(只传一个时,其他默认为空)

4.杂糅传参

这里给出一个例子(同样这个例子是写在Test文件中的):

//杂糅着用@ResponseBody@RequestMapping(path="/t6",method={RequestMethod.GET}) //二级请求路径public String test7(User user,String father){return user.toString()+father;}

重启服务器:

 将入参携带在请求中:

 5.用form表单的形式提交

前面我们的传参都是通过请求携带的,现在我们来实现通过Form表单来实现入参:

首先修改想要return的前端界面test.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>我是一个复现界面的例子,我是界面!</h1>
<!--加上表单-->
<form action="/StringMVCTestTwice/test/t5" method="get"><input type="text" name="name"/><br/><input type="text" name="age"/><br/><input type="text" name="sex"/><br/><input type="submit"/>
</form>
<!--表单结束-->
</body>
</html>

并在Test文件中添加:

//form的形式传参@RequestMapping(path="/t7",method={RequestMethod.GET}) //二级请求路径public String test7(User user){return "test";}

随后重启服务器去调用这个请求:

点击提交(就会自动识别跳转到 t5请求):

二、不常用的注解

1.RequestParam注解

1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值

2. 属性

1. value:请求参数中的名称

2. required:请求参数中是否必须提供此参数,默认值是true,必须提供

3. 代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;@Controller
@RequestMapping("/dept")
public class DeptController {@RequestMapping("/save")public String save(@RequestParam(value = "username",required = false) String name){System.out.println(name);return "suc";}
}

相关文章:

SpringMVC(三)请求

目录 一、RequestMapping注解 1.RequestMapping的属性 实例 1.在这里创建文件&#xff0c;命名为Test: 2.复现-返回一个页面&#xff1a; 创建test界面&#xff08;随便写点什么&#xff09;&#xff1a; Test文件中编写&#xff1a; ​编辑 运行&#xff1a; 3.不返回…...

Node.js应用程序遇到了内存溢出的问题

vue 项目 跑起来&#xff0c;一直报错&#xff0c;内存溢出 在 文件node_modules 里 .bin > vue-cli-service.cmd 在依赖包这个文件第一行加上这个 node --max-old-space-size102400 "%~dp0\..\vue\cli-service\bin\vue-cli-service.js" %* node --max-old-s…...

如何构建云原生时空大数据平台?

在现代企业中&#xff0c;随着对技术的依赖日益加深&#xff0c;空间数据的重要性愈发显著。它通过结合地理成分&#xff08;如纬度、经度、地址、邮编等&#xff09;与业务数据&#xff0c;成为解决复杂问题的重要工具。地理空间数据可从多种来源获取&#xff0c;例如卫星影像…...

二极管钳位电路分享

二极管钳位&#xff08;I/O的过压/浪涌保护等&#xff09; 如果我们的电路环境接收外部输入信号容易受到噪声影响&#xff0c;那我们必须采取过压和浪涌保护措施&#xff0c;其中一个方式就是二极管钳位保护。 像上图&#xff0c;从INPUT输入的电压被钳位在-Vf与VCCVf之间&…...

腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎

在当今数字化时代的汹涌浪潮中&#xff0c;数据已跃升为企业发展的关键要素&#xff0c;其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性&#xff0c;宛如一颗璀璨的明星&#xff0c;在交通、…...

19.3、Unix Linux安全分析与防护

目录 UNIX/Linux系统的安全分析与防护UNIX/Linux系统安全增强技术UNIX/Linux安全模块应用参考国产操作系统安全分析与防护 UNIX/Linux系统的安全分析与防护 unix和linux操作系统分成三层&#xff0c;分别是硬件层&#xff0c;系统内核层以及应用层。Windows系统也是分成三层&a…...

JVM对象内存结构

1对象内存结构说明 注意&#xff1a; 如果对象为数组对象&#xff0c;在对象头后面有4字节存储数组长度&#xff1b; 1.1对象头 对象头分为Mark Word和Class Pointer两部分&#xff1b; Mark Word&#xff1a;对象基础信息 32位操作系统中占4字节&#xff0c;64位操作系统中占8…...

联邦学习和大模型相结合: 数据隐私,提升训练效率,架构优化

联邦学习和大模型相结合: 数据隐私,提升训练效率,架构优化 数据隐私保护方面 增强隐私保护机制:大模型通常需要大量的数据进行训练,而联邦学习可以在不共享原始数据的情况下进行模型训练。结合两者,可以设计出更强大的隐私保护机制,如利用联邦学习的加密技术和差分隐私…...

命令别名和命令历史

1.1命名别名 别名是命令的快捷方式。对于需要经常执行&#xff0c;并需要很长时间输入的长命令创建快捷方式很有用。 语法&#xff1a; alias 别名 ’ 原命令 [ 选项 ]…… [ 参数 ]……’ 1.2命令历史...

打造三甲医院人工智能矩阵新引擎(二):医学影像大模型篇--“火眼金睛”TransUNet

一、引言 1.1 研究背景与意义 在现代医疗领域,医学影像作为疾病诊断与治疗的关键依据,发挥着不可替代的作用。从传统的X射线、CT(计算机断层扫描)到MRI(磁共振成像)等先进技术,医学影像能够直观呈现人体内部结构,为医生提供丰富的诊断信息,涵盖疾病识别、病灶定位、…...

Scade pragma: separate_io

概述 在 Scade 语言中&#xff0c;支持对用户自定义算子使用 separate_io pragma 进行修饰。其形式如&#xff1a; function #pragma kcg separate_io #end N(x: int8) returns (y,z: int8) let y x;z x; tel在上例中&#xff0c;算子N 就被 pragma #pragma kcg separate_i…...

IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)

时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元) 目录 时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现IWOA-GRU和GRU时间序列预测…...

“知识图谱AI教学辅助系统:点亮智慧学习的新灯塔

嘿&#xff0c;各位教育界的小伙伴们&#xff01;今天咱们来聊聊一个超级有料的话题——知识图谱AI教学辅助系统。想象一下&#xff0c;如果有一个智能导师能根据你的需求定制专属的学习路径&#xff0c;还能像百科全书一样随时解答疑问&#xff0c;是不是感觉学习变得更高效、…...

产品 防尘防水IP等级 划分与实验方法

概述&#xff1a; 我们经常听到或看到有关IP防护等级的说法。比如&#xff1a;xx产品的防护级别为IP54&#xff1b;xx产品的防护级别为IP65等等。IP54、IP65是外壳防护等级代码。 一款产品&#xff0c;在实验室内按照GB/T 2421规范对其外壳的防护能力进行实验&#xff0c;并将…...

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长&#xff0c;已成为企业开发大型项目的必备技术&#xff0c;中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念&#xff1a;微服务是一种软件架构风格&#xff0c;以专注于单一职责的多个响应项目为基…...

01、Docker学习,第一天:简单入门与安装

Docker学习&#xff0c;第一天&#xff1a;简单入门与安装 一、Docker简介 环境配置如此之麻烦&#xff0c;换台机器&#xff0c;重来一次&#xff0c;费事费力。安装的时候&#xff0c;把原始环境一模一样的复制过来。开发人员利用Docker可以消除写作编码时&#xff0c;”在…...

C++STL中iomanip的使用与细节

C标准模板库&#xff08;STL&#xff09;中的<iomanip>头文件提供了一组用于格式化输入输出流的函数和操纵符。这些函数和操纵符可以用来控制输出的布局、精度、宽度等。以下是一些常用的<iomanip>函数及其使用方式&#xff1a; setprecision(n)&#xff1a;设置浮…...

3.C语言变量的基础概念与使用

目录 1.变量名2.变量声明3.变量赋值4.变量作用域 1.变量名 本篇原文为&#xff1a;C语言变量的基础概念与使用 更多C进阶、rust、python、逆向等等教程&#xff0c;可点击此链接查看&#xff1a;酷程网 变量&#xff08;variable&#xff09;可以理解成一块内存区域的名字。…...

Go语言中的逃逸分析:深入浅出

Go语言中的逃逸分析&#xff1a;深入浅出 在Go语言中&#xff0c;逃逸分析&#xff08;Escape Analysis&#xff09;是一个非常重要且强大的编译器优化技术。它帮助编译器决定一个变量是在栈上分配还是在堆上分配&#xff0c;从而影响程序的性能和内存管理。本文将深入探讨Go语…...

【FlutterDart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)

上效果 预期的是通过拖动一条边界线改变窗口大小&#xff0c;类似vscode里拖动效果。这个是简单的拖动实现 上代码&#xff1a; import package:flutter/material.dart;class MyDraggableViewDemo extends StatelessWidget {const MyDraggableViewDemo({super.key});override…...

ZCU104 HDMI显示不匹配?手把手教你用串口菜单调分辨率(附完整指令清单)

ZCU104 HDMI显示问题终极排查指南&#xff1a;从串口控制到分辨率精准匹配 当你在ZCU104开发板上成功跑通HDMI例程&#xff0c;却发现显示器一片漆黑或者画面扭曲时&#xff0c;那种挫败感我深有体会。这就像精心准备了一顿大餐&#xff0c;最后却发现客人根本吃不到——硬件链…...

uni-app分包实战:巧解echarts.js体积难题,提升小程序启动速度

1. 为什么需要分包优化echarts.js&#xff1f; 第一次用uni-app开发带数据可视化的小程序时&#xff0c;我就被echarts.js的体积吓到了——压缩后的文件仍有700KB&#xff0c;直接导致主包体积超标。微信小程序主包限制2MB&#xff0c;加上其他业务代码&#xff0c;根本装不下这…...

数字员工:不同场景下的落地案例全景

数字员工&#xff1a;不同场景下的落地案例全景 数字员工正在从概念走向规模化落地&#xff0c;覆盖制造、金融、零售、人力、客服等多个行业。以下是2025-2026年各领域真实应用案例的详细拆解。 一、供应链与制造场景 1. 壹沓科技&#xff1a;供应链物流AI Agent 企业背景&…...

DeepPCB:工业级PCB缺陷检测数据集的工程化实践指南

DeepPCB&#xff1a;工业级PCB缺陷检测数据集的工程化实践指南 【免费下载链接】DeepPCB A PCB defect dataset. 项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB 印刷电路板&#xff08;PCB&#xff09;作为现代电子设备的"神经系统"&#xff0c;其质量…...

如何用Python-miio掌控小米智能设备:2025终极自动化控制指南

如何用Python-miio掌控小米智能设备&#xff1a;2025终极自动化控制指南 【免费下载链接】python-miio Python library & console tool for controlling Xiaomi smart appliances 项目地址: https://gitcode.com/gh_mirrors/py/python-miio Python-miio是一款强大的…...

LaserGRBL:如何用开源软件实现专业级激光雕刻控制

LaserGRBL&#xff1a;如何用开源软件实现专业级激光雕刻控制 【免费下载链接】LaserGRBL Laser optimized GUI for GRBL 项目地址: https://gitcode.com/gh_mirrors/la/LaserGRBL LaserGRBL是一款专为激光雕刻和切割优化的GRBL控制器Windows图形界面软件&#xff0c;为…...

融合柯西变异与动态权重的蝴蝶优化算法性能跃迁

1. 蝴蝶优化算法的瓶颈与突破方向 蝴蝶优化算法(BOA)作为一种模拟自然界蝴蝶觅食行为的群体智能算法&#xff0c;自提出以来就在工程优化、机器学习参数调优等领域展现出独特优势。但我在实际使用中发现&#xff0c;传统BOA存在两个明显短板&#xff1a;一是容易陷入局部最优解…...

如何快速掌握开源财经数据工具:AKShare的完整使用教程

如何快速掌握开源财经数据工具&#xff1a;AKShare的完整使用教程 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/ak…...

终极指南:3步为Windows 11 LTSC系统快速安装微软商店应用商店

终极指南&#xff1a;3步为Windows 11 LTSC系统快速安装微软商店应用商店 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC-Add-Micros…...

从0到1搭建工业级智能监控系统:YOLOv8+ByteTrack的多目标检测与跟踪实践

在智能监控场景中,单纯的目标检测只能告诉你“画面里有什么”,而结合跟踪技术才能回答“这个目标在做什么、去了哪里”。比如交通监控中,不仅要识别车辆,还要跟踪其行驶轨迹计算车速;园区安防里,不仅要检测人员,还要判断是否有异常徘徊。 本文基于YOLOv8(检测)+ByteT…...