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

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

第二章 @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.lryc.cn/news/32238.html

相关文章:

  • QML Text详解
  • xxl-job启用https访问
  • 2023FL Studio最新中文版电子音乐、混音和母带制作DAW
  • pytorch 35 yolov5_obb项目解读+使用技巧+调优经验(提升map)
  • OpenMv H7 口罩识别--毕业设计学习记录
  • 有什么比较好的bug管理工具?5款热门工具推荐
  • 第五章 opengl之摄像机
  • nginx配置详解(容器、负载)—官方原版
  • 2023年中职网络安全竞赛——CMS网站渗透解析
  • SQL 窗口函数详解
  • Android 12系统源码_SystemUI(六)显示和隐藏最近任务
  • Docekr三剑客之 Docekr compose
  • 企业是否具备等保测评资质在哪里查?怎么查?
  • Spacedesk软件推荐,让你的平板也变成电脑的副屏
  • Vue 3.0 组合式API 介绍 【Vue3 从零开始】
  • 【算法数据结构体系篇class13、14】:贪心算法思想
  • C++知识点,关键字inline ,String,强制类型转化
  • MyBatis源码分析(六)MetaObject工具类的使用与源码分析
  • 文献资源最多的文献下载神器,99.99%的文献都可下载
  • 工控机ARM工业边缘计算机搭建Node-Red环境
  • 位图/布隆过滤器/海量数据处理方式
  • Tomcat 配置文件数据库密码加密
  • k8s-Kubernetes集群部署
  • Python数据分析案例19——上市银行财务指标对比
  • Python 中错误 ConnectionError: Max retries exceeded with url
  • SpringBoot下的Spring框架学习(Tedu)——DAY02
  • 容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法
  • 认识Spring(下)
  • Educational Codeforces Round 144 (Rated for Div. 2) C - Maximum Set
  • 学python的第四天---基础(2)