写点什么

Java --- SpringMVC 的 @RequestMapping 注解

作者:鸭鸭yyds
  • 2022-11-02
    四川
  • 本文字数:2353 字

    阅读完需:约 8 分钟

一、@RequestMapping 注解功能

@RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。


 原因就是这个映射关系是唯一的,但在工程中这个是重复的。

二、@RequestMapping 注解位置

@RequestMapping 标识在类上:设置映射请求的请求路径的初始信息。

@RequestMapping 标识在方法上:设置映射请求的请求路径的具体信息

@Controller//标识在类上主要用于模块间的控制@RequestMapping("/hello")public class TestController01 {    @RequestMapping("/success")    public String success(){        return "success";    } }
复制代码


 index.html 页面

<!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="@{/hello/success}">访问success页面</a></body></html>
复制代码

三、@RequestMapping 注解的 value 属性

1、@RequestMapping 注解的 value 属性是通过请求的请求地址匹配请求映射

2、@RequestMapping 注解的 value 属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求。

3、@RequestMapping 注解的 value 属性必须设置,至少通过请求地址匹配请求映射

测试代码:

@Controllerpublic class TestController01 {    @RequestMapping(value = {"hello","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="@{/hello}">访问success页面</a><br><a th:href="@{/test}">访问success页面</a></body></html>
复制代码

四、@RequestMapping 注解的 method 属性

@RequestMapping 注解的 method 属性通过请求的请求方式(get 或 post)匹配请求映射。

@RequestMapping 注解的 method 属性是一个 RequestMethod 类型的数组,表示该请求映射能够匹配多种请求方式的请求。

当前请求的请求地址满足请求映射的 value 属性,但是请求方式不满足 method 属性,则浏览器报 405;

在默认请求方式下的 post,get 都能请求成功

controller 层代码不变。

<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h1>首页</h1><form th:action="@{/hello}" method="post">    <input type="submit" value="在默认方式下测试post"></form><form th:action="@{/test}" method="get">    <input type="submit" value="在默认方式下测试get"></form></body></html>
复制代码


指定使用 get 请求:

@Controllerpublic class TestController01 {    @RequestMapping(value = {"hello","test"},                    method = {RequestMethod.GET})    public String success(){        return "success";    } }
复制代码


当访问 post 请求时报错



根据需要可以设置多种请求方式 



 1、对于处理指定请求方式的控制器方法,SpringMVC 中提供了 @RequestMapping 的派生注解

处理 get 请求的映射使用 GetMapping,处理 post 请求的映射使用 PostMapping,处理 put 请求的映射使用 PutMapping,处理 delete 请求的映射使用 DeleteMapping。

 @GetMapping("/test")    public String getSuccess(){        return "success";    }
复制代码


2、常用的请求方式有 get,post,put,delete

目前浏览器只支持 get 和 post 请求,若 from 表单在提交时,使用 method 设置其他请求方式,则都按默认请求方式 get 处理。

若要发送 put 和 delete 请求,则需要通过 Spring 提供的过滤器 HiddenHttpMethodFilter。





 五、@RequestMapping 注解的 params 属性

 @RequestMapping 注解的 params 属性通过请求参数匹配请求映射

@RequestMapping 注解的 params 属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系。

"param":要求请求映射所匹配的请求必须携带 param 请求参数。

"!param":要求请求映射所匹配的请求不能携带 param 请求参数。

"param=value":要求请求映射所匹配的请求必须携带 param 请求参数且 param=value。

"param!=value":要求请求映射所匹配的请求必须携带 param 请求参数且 param!=value。

 @RequestMapping(value = "/test2",                    params = {"name=张三","password=123456"})    public String success(){        return "success";    }
复制代码


<a th:href="@{/test2(name='张三',password=123456)}">携带params访问success页面</a>
复制代码


当传入参数匹配不上时就会报浏览器 400 错误:



  六、@RequestMapping 注解的 headers 属性

@RequestMapping 注解的 headers 属性通过请求的请求头信息匹配请求映射。

@RequestMapping 注解的 headers 属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系。

“header”:要求请求映射所匹配的请求必须携带 header 请求头信息。

“!header”:要求请求映射所匹配的请求不能携带 header 请求头信息。

“header”:要求请求映射所匹配的请求必须携带 header 请求头信息且 header=value。

“header”:要求请求映射所匹配的请求必须携带 header 请求头信息且 header!=value。

若当前请求未满足 @RequestMapping 注解的 value 和 method 属性,但是不满足 headers 属性,页面显示 404 错误。

    @RequestMapping(value = "/test2",                    params = {"name=张三","password=123456"},                    headers = {"Host=localhost:8081"})    public String success(){        return "success";    }
复制代码


<a th:href="@{/test2(name='张三',password=123456)}">携带params访问success页面</a>
复制代码




发布于: 刚刚阅读数: 3
用户头像

鸭鸭yyds

关注

还未添加个人签名 2022-11-01 加入

还未添加个人简介

评论

发布
暂无评论
Java --- SpringMVC的@RequestMapping注解_springmvc_鸭鸭yyds_InfoQ写作社区