文章目录
一、SpringMVC中的@RequestMapping注解
1、@RequestMapping注解的功能
@RequestMapping注解的中文翻译是(请求映射),它的作用是将请求映射到控制器的处理方法上,包括定义请求的URL路径、请求方法、请求参数、请求头以及其他请求属性。
2、@RequestMapping注解的位置
标识位置 | 用途 |
---|---|
标识一个类 | 设置映射请求的请求路径的初始信息 |
标识一个方法 | 设置映射请求请求路径的具体信息 |
代码示例
@Controller
//此时请求映射所映射的请求的请求路径为:/test
@RequestMapping("/test")
public class RequestMappingController {
//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
return "success";
}
}
3、@RequestMapping注解的value属性
- value属性通过请求的请求地址匹配请求映射
- value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
- value属性必须设置,至少通过请求地址匹配请求映射
代码示例:
<a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性-->/testRequestMapping</a><br>
<a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
@RequestMapping(
value = {"/testRequestMapping", "/test"}
)
public String testRequestMapping(){
return "success";
}
4、@RequestMapping注解的method属性
- method属性通过请求的请求方式(get或post)匹配请求映射
- method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求
注:
若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:Request method ‘POST’ not supported
代码示例:
<a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
<form th:action="@{/test}" method="post">
<input type="submit">
</form>
@RequestMapping(
value = {"/testRequestMapping", "/test"},
method = {RequestMethod.GET, RequestMethod.POST}
)
public String testRequestMapping(){
return "success";
}
注:
1、对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解
处理的请求类型映射 注解 处理get请求的映射 @GetMapping 处理put请求的映射 @PostMapping 处理post请求的映射 @PutMapping 处理delete请求的映射 @DeleteMapping 2、常用的请求方式有get,post,put,delete
但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理
若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter
5、@RequestMapping注解的params属性
- params属性通过请求的请求参数匹配请求映射
- params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
表达式 | 匹配要求 |
---|---|
“param” | 请求映射所匹配的请求必须携带param请求参数 |
“!param” | 请求映射所匹配的请求必须不能携带param请求参数 |
“param=value” | 请求映射所匹配的请求必须携带param请求参数且param=value |
“param!=value” | 请求映射所匹配的请求必须携带param请求参数但是param!=value |
代码示例:
<a th:href="@{/test(username='admin',password=123456)">测试@RequestMapping的params属性-->/test</a><br>
@RequestMapping(
value = {"/testRequestMapping", "/test"}
,method = {RequestMethod.GET, RequestMethod.POST}
,params = {"username","password!=123456"}
)
public String testRequestMapping(){
return "success";
}
注:
若当前请求满足@RequestMapping注解的value和method属性,但是不满足params属性,此时页面回报错400:Parameter conditions “username, password!=123456” not met for actual request parameters: username={admin}, password={123456}
6、@RequestMapping注解的headers属性
- headers属性通过请求的请求头信息匹配请求映射
- headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系
表达式 | 匹配要求 |
---|---|
“!header” | 要求请求映射所匹配的请求必须携带header请求头信息 |
“!header”" | 要求请求映射所匹配的请求必须不能携带header请求头信息 |
“header=value” | 要求请求映射所匹配的请求必须携带header请求头信息且header=value |
“header!=value” | 要求请求映射所匹配的请求必须携带header请求头信息且header!=value |
注:
若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时>页面显示404错误,即资源未找到