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

[3-02-02].第04节:开发应用 - RequestMapping注解的属性2

SpringMVC学习大纲


注解的源码:

在这里插入图片描述


三、注解的params属性

3.1.params属性的理解:

  • params属性用来通过设置请求参数来映射请求。对于RequestMapping注解来说:
    • params属性也是一个数组,不过要求请求参数必须和params数组中要求的所有参数完全一致后,才能映射成功
      image.png

3.2.params属性的4种用法:

a.参数说明:

  • @RequestMapping(value=“/login”, params={“username”, “password”}) 表示:
    • 请求参数中必须包含 username 和 password,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“!username”, “password”}) 表示:
    • 请求参数中不能包含username参数,但必须包含password参数,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“username=admin”, “password”}) 表示:
    • 请求参数中必须包含username参数,并且参数的值必须是admin,另外也必须包含password参数,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“username!=admin”, “password”}) 表示:
    • 请求参数中必须包含username参数,但参数的值不能是admin,另外也必须包含password参数,才能与当前标注的方法进行映射
      注意:如果前端提交的参数,和后端要求的请求参数不一致,则出现400错误!!!

b.返回值状态码:

  • HTTP状态码400的原因:请求参数格式不正确而导致的

3.3.测试params属性:

a.添加接口方法:

  • 在 RequestMappingTestController 类中添加如下方法:
@RequestMapping(value="/testParams", params = {"username", "password"})
public String testParams(){return "testParams";
}
  • 2.提供视图页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>testParams</title>
</head>
<body>
<h1>测试RequestMapping注解的Params属性</h1>
</body>
</html>

b.添加超链接:

  • 在index.html文件中添加超链接:
<!--测试RequestMapping的params属性-->
<a th:href="@{/testParams(username='admin',password='123')}">测试params属性</a>
  • 当然,你也可以这样写:这样写IDEA会报错,但不影响使用
<a th:href="@{/testParams?username=admin&password=123}">测试params属性</a><br>

c.发送请求时,传递username参数:

image.png
image.png


d.发送请求时,没有传递username参数:

<a th:href="@{/testParams(password='123')}">测试params属性</a><br>
  • 启动服务器,测试:
    image.png
  • 提示无效的请求参数,服务器无法或不会处理当前请求
    image.png

四、注解的headers属性

4.1.认识headers属性:

a.属性理解:

  • headers和params原理相同,用法也相同
    • 当前端提交的请求头信息和后端要求的请求头信息一致时,才能映射成功

b.请求头信息怎么查看?

  • 在chrome浏览器中,F12打开控制台,找到Network,可以查看具体的请求协议和响应协议,在请求协议中可以看到请求头信息,例如:
    image.png
  • 请求头信息和请求参数信息一样,都是键值对形式,例如上图中:
    • Referer: http://localhost:8080/springmvc/ 键是Referer,值是http://localhost:8080/springmvc/
    • Host: localhost:8080 键是Host,值是localhost:8080

4.2.headers属性的4种用法:

  • @RequestMapping(value=“/login”, headers={“Referer”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, headers={“Referer”, “!Host”}) 表示:
    • 请求头信息中必须包含Referer,但不包含Host,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, headers={“Referer=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,并且Referer的值必须是http://localhost:8080/springmvc/,才能与当前标注的方法进行映射。
  • @RequestMapping(value=“/login”, headers={“Referer!=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,并且Referer的值不是http://localhost:8080/springmvc/,才能与当前标注的方法进行映射。
  • 注意:如果前端提交的请求头信息,和后端要求的请求头信息不一致,则出现404错误!!!

4.3.测试headers属性:

a.定义接口:

  • 在 RequestMappingTestController 类中添加以下方法:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8080/springmvc/"})
public String testHeaders(){return "testHeaders";
}

b.编写页面:

  • 提供视图页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>test Headers</title>
</head>
<body>
<h1>测试RequestMapping注解的headers属性</h1>
</body>
</html>

c.超链接:

  • 在index.html页面中添加超链接:
<!--测试RequestMapping的headers属性-->
<a th:href="@{/testHeaders}">测试headers属性</a><br>

d.测试:

  • 启动服务器,测试结果:
    image.png
    image.png
  • 将后端控制器中的headers属性值进行修改:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8888/springmvc/"})
public String testHeaders(){return "testHeaders";
}
  • 再次测试:
    image.png
http://www.dtcms.com/a/293087.html

相关文章:

  • TCP头部
  • Kotlin伴生对象
  • Go后端配置文件教程
  • LeetCode|Day22|231. 2 的幂|Python刷题笔记
  • AI一周事件(2025年7月15日-7月21日)
  • 开发避坑短篇(4):跨域请求中Session数据丢失的排查与修复方案
  • Qt资源系统:如何有效管理图片和文件
  • 【黑马SpringCloud微服务开发与实战】(五)微服务保护
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 访问鉴权功能实现
  • MMDeploy模型转换与TensorRT推理遇到问题及解决方案
  • GRU模型
  • Trae安装指定版本的插件
  • Clickhouse源码分析-副本数据同步
  • 网络编程---TCP协议
  • Spring AI 系列之十九 - Ollama集成Deepseek
  • 配置https ssl证书生成
  • 数字护网:一次深刻的企业安全体系灵魂演练
  • 接口测试用例选择及效能优化策略
  • vcs门级仿真(后仿真)指南
  • 如何处理各行业的DDOS问题?
  • VUE2 学习笔记3 v-on、事件修饰符、键盘事件
  • JAVA后端面试笔记
  • 前端性能优化:从“龟速“到“闪电“的终极加速指南
  • c++day05(ASCII)
  • Git GitHub精通:前端协作开发的“瑞士军刀“!
  • 字符串相关函数
  • visual studio 性能调试
  • 大数据之Hive:Hive中week相关的几个函数
  • 【Java】SVN 版本控制软件的快速安装(可视化)
  • Qt中的栅格布局的核心机制与栅格布局中的元素隐藏后重新排列布局解决方案解析