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

相关文章:

  • Fluent许可与网络安全策略
  • 【kubernetes】-2 K8S的资源管理
  • Java数据结构——ArrayList
  • 【黑马SpringCloud微服务开发与实战】(五)微服务保护
  • 嵌入式学习-土堆目标检测(3)-day27
  • 【自定义一个简单的CNN模型】——深度学习.卷积神经网络
  • 【Java】SVN 版本控制软件的快速安装(可视化)
  • 洛谷刷题7..22
  • (Arxiv-2025)HiDream-I1:一种高效图像生成基础模型,采用稀疏扩散Transformer
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • Day20-二叉树基础知识
  • 智能Agent场景实战指南 Day 18:Agent决策树与规划能力
  • Java 动态导出 Word 登记表:多人员、分页、动态表格的最佳实践
  • IntelliJ IDEA (2024.3.1)优雅导入 Maven 项目的两种方式详解
  • 【IDEA】如何在IDEA中通过git创建项目?
  • IDEA-通过IDEA导入第三方的依赖包
  • Spring5的IOC原理
  • Node.js:Web模块、Express框架
  • Java自动拆箱机制
  • day059-zabbix自定义监控与自动发现
  • 支付网关系统前后端鉴权方案
  • Linux笔记1——简介安装
  • 【实时Linux实战系列】实时文件系统的特性与优化
  • RK3568 Linux驱动学习——SDK烧录
  • Pandas核心数据结构详解
  • 拉普拉斯变换的理解
  • 【Lucene】架构
  • React 项目性能瓶颈分析
  • 力扣刷题 -- 572.另一颗树的子树
  • rk平台(rv1126/rk3588)音视频-交叉编译FFmpeg7.1