【第二章 @RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符】

news2024/9/23 9:36:07

第二章 @RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符

1. @RequestMapping注解:
(1) @RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。springMVC接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。
(2) @RequestMapping标识一个类,设置映射请求的请求路径的初始信息;@RequestMapping标识一个方法,设置映射请求的请求路径的具体信息。
(3)@RequestMapping注解的value属性:
value属性:根据请求的地址匹配,value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求,value属性必须设置,至少通过请求地址匹配映射。

@Controller
public class RequestMappingController {
   @RequestMapping(
           value = {"/testRequestMapping","/test"})
    public  String success(){
       return "success";
   }
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/testRequestMapping}">测试RequestMapping注解的位置</a><br/>
<a th:href="@{/testRequestMapping}">测试RequestMapping注解的value属性----->/testRequestMapping</a><br/>
<a th:href="@{/test}">测试RequestMapping注解的的value属性----->/test</a><br/>
</body>
</html

(4)@RequestMapping注解的method属性:
①method属性:通过请求的请求方式(get或post)匹配请求映射,method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求,若当前请求的请求地址满足请求映射的value值,但请求方式不满足method属性值,则报错405。

@Controller
public class RequestMappingController {
   @RequestMapping(
           value = {"/testRequestMapping","/test"},
            method={RequestMethod.GET,RequestMethod.POST})
    public  String success(){
       return "success";
   }
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/test}">测试RequestMapping注解的的method属性----->/GET</a><br/>
<form th:action="@{/test}" method="post">
    <input type="submit" value="测试RequestMapping注解的的method属性---->POST">
</form>
</body>
</html>

②对于处理指定请求方式的控制方法,springMVC中提供了@RequestMapping的派生注解。
处理get请求的映射----->@GetMapping
处理post请求的映射----->@PostMapping
处理put请求的映射------>@PutMapping
处理delete请求的映射----->@DeleteMapping

 @GetMapping("/testGetMapping")
   public  String testGetMapping(){
      return "success";
   }
<a th:href="@{/testGetMapping}">测试testGetMapping注解----->/testGetMapping</a><br/>

③常用的请求方式有get、post、put、delete
目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理。若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter。(超链接发送请求的方式是固定的,一定为get请求)
(5)@RequestMapping注解的params属性:
①params属性通过请求的请求参数匹配请求映射;
②params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系。
param:要求请求映射所匹配的请求必须携带param请求参数;
!param:要求请求映射所匹配的请求必须不能携带param请求参数;
param=value:要求请求映射所匹配的请求必须携带param请求参数且param=value;
param!=value:要求请求映射所匹配的请求必须携带param请求参数但是param!=value。

 @RequestMapping(
           value = "/testParamsAndHeaders",
           params = {"username","password=123456"} )
   public  String testParamsAndHeaders(){
      return "success";
   }
<a th:href="@{/testParamsAndHeaders(username='admin',password=123456)}">
测试RequestMapping注解的的params属性----->/testParamsAndHeaders</a><br/>

2.springMVC支持ant风格的路径:
①?:表示任意单个字符;

 @RequestMapping("/a?a/testAnt")
   public  String testAnt(){
      return "success";
   }
 <a th:href="@{/a1a/testAnt}">测试RequestMapping可以匹配Ant风格的路径----->使用?</a><br/>  

在这里插入图片描述
②* :表示任意的0个或多个字符;

 @RequestMapping("/a*a/testAnt")
   public  String testAnt(){
      return "success";
   }
<a th:href="@{/aaaaaa/testAnt}">测试RequestMapping可以匹配Ant风格的路径----->使用*</a><br/>

在这里插入图片描述
③* *:表示任意的一层或多层目录;
注意:在使用 * *时,只能使用 / * */xxx的方式。

  @RequestMapping("/**/testAnt")
   public  String testAnt(){
      return "success";
   }
<a th:href="@{/aa/aa/aa/testAnt}">测试RequestMapping可以匹配Ant风格的路径----->使用**</a><br/>

在这里插入图片描述
3.springMVC支持路径中的占位符:
原始方式:/deteleUser?id=1
rest方式:/deteleUser/1

@RequestMapping("/testPath/{id}")
   public  String testPath(@PathVariable("id")Integer id){
      System.out.println("id:"+id);
      return "success";
   }
<a th:href="@{/testPath/1}">测试RequestMapping支持路径中的占位符----->/testPath</a><br/>  

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

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

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

相关文章

数据结构与算法之桶排序

目录桶排序概念代码实现时间复杂度桶排序概念 桶排序 &#xff08;Bucket sort&#xff09;或所谓的箱排序&#xff0c;是一个排序算法&#xff0c;工作的原理是将数组分到有限数量的桶里。每个桶再个别排序&#xff08;有可能再使用别的排序算法或是以递归方式继续使用桶排序…

如何根据实际需求选择合适的三维实景建模方式?

随着实景三维中国建设的推进&#xff0c;对三维实景建模的数字化需求大幅增加。由于三维实景建模具有采集速度快、计算精度高等建模优势&#xff0c;引起了各个行业的高度关注。三维实景建模是一种应用数码相机或者激光扫描仪对现有场景进行多角度环视拍摄&#xff0c;然后利用…

进制转换(详解二进制、八进制、十进制、十六进制的相互转换)

目录二进制运算规则十进制的转换二进制数、八进制数、十六进制数的相互转换&#x1f458;什么是数制 用进位的原则进行计数称为进位计数制&#xff0c;简称数制。进位计数制的特点是表示数值大小的数码与它所处的位置有关&#xff0c;每种数制都包含两个基本的要素&#xff1a;…

WPF WrapPanel、UniformGrid、DockPanel介绍

WPF WrapPanel、UniformGrid、DockPanel介绍 WrapPanel WrapPanel , 具有在有限的容器范围内, 可以自动换行, 或者换列处理。具体则取决于WrapPanel的排列方式 (Orientation)。 Orientation"Horizontal"时各控件从左至右罗列&#xff0c;当面板长度不够时&#xff…

JMM JVM 垃圾回收

目录 一、JMM内存模型 1、定义 2、JMM的三大特性(可见性原子性有序性) 2.1 可见性 2.2 原子性 2.3 有序性 3、JMM中的8种原子操作 二、JVM 1、JVM体系结构 2、JVM参数调优 2.1 三大参数类型 2.2 九个调优参数 三、垃圾回收器 1、4种GC算法(引用计数 /复制拷贝/标…

深度学习pytorch实战三:VGG16图像分类篇自建数据集图像分类三类

1.自建数据集与划分训练集与测试集 2.模型相关知识 3.model.py——定义AlexNet网络模型 4.train.py——加载数据集并训练&#xff0c;训练集计算损失值loss&#xff0c;测试集计算accuracy&#xff0c;保存训练好的网络参数 5.predict.py——利用训练好的网络参数后&#xff0c…

【Taro开发】-文字展开收起组件(十五)

Taro小程序开发 系列文章的所有文章的目录 【Taro开发】-初始化项目&#xff08;一&#xff09; 【Taro开发】-路由传参及页面事件调用&#xff08;二&#xff09; 【Taro开发】-taro-ui&#xff08;三&#xff09; 【Taro开发】-带token网络请求封装&#xff08;四&#x…

Sonar:Win10搭建SonarQube9.8服务

需求描述 公司为项目代码配置了Sonar检测&#xff0c;最初只是想调研在VSCode中同步远程检测的方法&#xff08;现在请参考Sonar&#xff1a;VSCode配置SonarLint/SonarLint连接SonarQube&#xff09;&#xff1b;结果并没有找到靠谱的教程。。在度娘的信息海洋胡乱扑腾两天后…

Docker(七)--Docker数据卷管理及插件

文章目录一、Docker 数据卷管理1.bind mount2.docker managed volume3.bind mount与docker managed volume对比二、跨节点存储convoy卷插件一、Docker 数据卷管理 在实际使用过程中&#xff0c;我们需要把容器和数据进行隔离&#xff0c;因为容器在使用过程中可能随时要进行销…

C++:set和map(模拟实现)

目录 关联式容器 键值对 树形结构的关联式容器 set的介绍 set的使用 map的介绍 map的使用 multiset的介绍 multimap的介绍 底层结构 AVL树的概念 AVL树节点的定义 AVL树的旋转 左单旋 右单旋 先右单旋再左单旋 先左单旋再右单旋 模拟实现AVL树 红黑树 红黑树…

【C++】30h速成C++从入门到精通(stack、queuepriority_queue以及deque介绍)

stackstack的介绍https://cplusplus.com/reference/stack/stack/?kwstackstack是一种容器适配器&#xff0c;专门在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特…

详解一致性哈希算法

在单机系统中&#xff0c;所有的数据都存储在同一个服务器下&#xff0c;当数据量越来越多的时候&#xff0c;超过了单机存储容量的上限&#xff0c;就需要使用分布式存储系统&#xff0c;在分布式存储系统重&#xff0c;数据会被拆分到不同的存储服务下&#xff0c;减少单机服…

[数据结构]:12-快速排序(顺序表指针实现形式)(C语言实现)

目录 前言 已完成内容 快速排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代…

【Linux】canal1.1.7同步MySQL8.0.3和Redis

目录前言一、MySQL8配置1. 修改my.cnf2. 重启mysql3. 建用户、授权二、Canal服务端配置1. 下载2. 修改配置3. 启动服务与验证三、Canal客户端编写1. yml配置文件添加canal服务端配置信息和Redis信息2. 配置pom文件3. 代码4. MySQL建表storage.storage5. 启动客户端与验证参考前…

中微8S6990使用过程的一些记录--GPIO初始化、定时器、PWM、ADC、休眠等外设的配置和使用

前言 最近把一款产品的代码从新唐MS51移植到了中微8S6990平台上&#xff0c;记录下移植过程遇到的各种情况。 目录前言定时器初始化、中断服务函数GPIO配置ADC模数转换初始化PWM初始化Main函数休眠的一些注意事项最后定时器初始化、中断服务函数 void TMR0_Config(void) {/*(…

keepalived+nginx 双机热备搭建

keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux&#xff08;双机执行&#xff09;1.6 修改hosts&#xff08;双机执行&#xff09;二、安装keepalived2.1 执行一下命令安装keepa…

MidiaPipe +stgcn(时空图卷积网络)实现人体姿态判断(单目标)

文章目录前言Midiapipe关键点检测stgcn 姿态评估效果前言 冒个泡&#xff0c;年少无知吹完的牛皮是要还的呀。 那么这里的话要做的一个东西就是一个人体的姿态判断&#xff0c;比如一个人是坐着还是站着还是摔倒了&#xff0c;如果摔倒了我们要做什么操作&#xff0c;之类的。…

【模型复现】-alexnet,nn.Sequential顺序结构构建网络

深度卷积神经网络&#xff08;AlexNet&#xff09; 在LeNet提出后的将近20年里&#xff0c;神经网络一度被其他机器学习方法超越&#xff0c;如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩&#xff0c;但是在更大的真实数据集上的表现并不尽如人意。一方面&#…

第五章 事务管理

1.事务概念 *什么是事务&#xff1a;事务是数据库操作最基本单元&#xff0c;逻辑上是一组操作&#xff0c;要么都成功&#xff0c;要么都失败 *事务的特性&#xff08;ACID&#xff09;&#xff1a;原子性、隔离性、一致性、持久性 2.搭建事务操作环境 *模拟场景&#xff…

uart串口接收模块

uart串口接收模块 1、UART&#xff08;异步串行接口&#xff09; 串行通信&#xff1a;指利用一条数据线将资料一位位的顺序传输。   异步通信&#xff1a;以一个字符为传输单位&#xff0c;通信中两个字符间的时间间隔是不固定的&#xff0c;然而在同一个字符的两个相邻位代…