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

发布于:2025-07-23 ⋅ 阅读:(27) ⋅ 点赞:(0)

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

网站公告

今日签到

点亮在社区的每一天
去签到