当前位置: 首页 > 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…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...