学习目标@RequestMapping注解的method属性
知识点三、
@RequestMapping注解的method属性:
1. 匹配请求映射必须设置value,但是请求方式不是必须的
2.请求方式post和get来匹配请求映射,当同时设置了value和method属性后,必须都满足才
可以匹配请求映射。
3.get方式将请求参数用?拼接在浏览器url中发起请求,而post则将请求参数通过请求体发起请求。
两种都是请求方式的格式都是name=value的形式。
4.get不安全但是响应快传输量小,post安全但是响应慢传输量大
5.测试:
(1)在success方法的注解里,加上method属性,以GET方式匹配请求映射
即 method ={RequestMethod.GET}
(2)在index.html中添加一个from表单里面写一个submit按钮,设置提交方式为post
<form th:action="@{/hello/test}" method="post">
<input type="submit" value="测试RequestMapping的method属性---->POST">
</form>
(3)启动测试
点击测试按钮,发现报405错误!Request method 'POST' not supported
设置匹配请求映射方式为GET,而以post发起请求,所以不能匹配请求映射。
同理post也一样。
@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射
@RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方
式的请求
*若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错405:
Request method 'POST' not supported
其中@RequestMapping有对于指定请求方式的控制器方法,@RequestMapping的派生注解:
GetMapping --- 处理get请求的映射
PostMapping --- 处理post请求的映射
PutMapping ---处理put请求的映射
DeleteMapping ---处理delete请求的映射
练习测试一下@GetMapping,此时就只需要写value值
//测试指定映射请求的方式为GET
@GetMapping("testGetMapping")
public String testGetMapping(){
return "success";
}
<a th:href="@{/hello/testGetMapping}">测试GetMapping注解--->testGetMapping</a><br>
访问成功
练习测试@PostMapping
//测试指定映射请求的方式为POST
@PostMapping("testPostMapping")
public String testPostMapping(){
return "success";
}
<form th:action="@{/hello/testPostMapping}" method="post">
<input type="submit" value="测试PostMapping注解---post">
</form>
练习测试@PutMapping
//测试指定映射请求的方式为PUT
@PutMapping(value = "/testPut")
public String testPut(){
return "success";
}
<form th:action="@{/hello/testPut}" method="put">
<input type="submit" value="测试form表单能否发送put或者delete请求">
</form>
以put请求报405错! Request method 'GET' not supported
说明即使指定为put或者delete方式,也按照get进行请求
总结:目前浏览器只支持get和post,超链接是以get方式发送请求,如果在from表单提交时,
为method设置了其他请求方式的字符串(put或者delete),
则按照默认的请求get处理。