当前位置: 首页 > 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.xdnf.cn/news/1168903.html

相关文章:

  • 支付网关系统前后端鉴权方案
  • 网络原理 HTTP 和 HTTPS
  • 代码检测SonarQube+Git安装和规范
  • Uni-App:跨平台开发的终极解决方案
  • uniapp打开导航软件并定位到目标位置的实现
  • 当直播间告别“真人时代”:AI数字人重构商业新秩序
  • uni-calendar自定义签到打卡颜色
  • Apache Ignite 中的 SQL 模式(Schema)管理机制
  • 使用python中的pymysql库,并且转化为数组元组数据
  • adb的使用
  • Leetcode—692. 前K个高频单词【中等】(桶排序)
  • Linux的磁盘存储管理实操——(下一)——标准分区扩容
  • Ajax第一天
  • GoLand 部署第一个项目
  • 【Python】常见模块及其用法
  • 认识自我的机器人:麻省理工学院基于视觉的系统让机器了解自身机体
  • 【LeetCode 热题 100】46. 全排列——回溯
  • Windows 编程辅助技能:转到文档
  • Docker实战系列:使用Docker部署AI SSH客户端工具IntelliSSH
  • 2025年远程桌面软件深度评测:ToDesk、向日葵、TeamViewer全方位对比分析
  • Golang避免主协程退出方案
  • 期权分红怎么分的?
  • Thinkphp8使用Jwt生成与验证Token
  • Spring之【Bean工厂后置处理器】
  • MybatisPlus入门指南
  • LeetCode 658.找到K个最接近的元素
  • 豪鹏科技锚定 “AI + 固态” 赛道:从电池制造商到核心能源方案引领者的战略跃迁
  • leetcode 1695. 删除子数组的最大得分 中等
  • 浏览器解码顺序xss
  • 低成本、高泛化能力的无人机自主飞行!VLM-Nav:基于单目视觉与视觉语言模型的无地图无人机导航