requestmapping注解作用spring boot,springmvc中@requestmapping的作用
目录
spring MVC annotation @ request mapping I,@RequestMapping annotation 1的位置。按照方法2操作。作用于@RequestMapping批注的类2,值属性3,@RequestMapping批注@RequestMapping的方法属性是从请求模式批注IV派生的。@RequestMapping批注的params属性与@RequestMapping批注的headers属性
SpringMVC注解@RequestMapping
在前面的hello world示例中,使用了注释@RequestMapping,它的作用是将请求与处理请求的控制器方法关联起来,建立映射关系。
当SpringMVC收到指定的请求时,会在这个映射关系中找到对应的控制器方法来处理请求。
00-1010在示例中,注释用在方法上,此外,它们也可以用在类上。
一、@RequestMapping 注解的位置
@ controller public class RequestMappingController { @ request mapping(/testRequestMapping )公共字符串testRequestMapping(){ return success ;}}此时请求映射所映射的请求的请求路径为:/testRequestMapping。
00-1010 @ controller @ request mapping(/test )公共类request mapping controller {//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping @ request mapping(/testRequestMapping )公共字符串testRequestMapping(){ return success ;}}此时请求映射所映射的请求的请求路径为:/test/testRequestMapping。
以后动作类会经常用到。比如有两个模块:用户和订单,那么每个模块都会有自己的列表界面/列表。
为了更好地通过名称区分不同的模块,您可以对这两个类进行注释,使它们的最终路径为/user/list、/order/list。
当然,也可以直接在没有类标注的方法的标注上进行区分,比如/userList和/orderList。
简而言之,一个请求只能由一个控制器处理。如果在两个不同的控制器方法中使用/list,当请求到来时,您将不知道要寻找哪一个,并且您将报告一个错误。
00-1010Value属性通过请求的请求地址匹配请求映射,该属性必须设置,否则请求地址无法匹配映射。
此外,value属性也是字符串类型的数组,表示请求映射可以匹配具有多个请求地址的请求。
@ controller public class RequestMappingController { @ request mapping(value={ /test1 ,/test2})公共字符串testRequestMapping(){ return success ;}}这里,无论请求地址是/test1还是/test2,都可以找到控制器testRequestMapping()并返回success.html。
00-1010method属性通过请求的请求方法(如get或post)匹配请求映射。
method属性是RequestMethod类型的数组,表示请求映射可以匹配具有多种请求模式的请求。
如果当前请求的请求地址满足请求映射的value属性,但是请求方法不满足method属性,比如控制器设置请求方法为GET,但是请求发送到post:
@ controller public class RequestMappingController { @ Request
Mapping( value = {"/test1"}, method = {RequestMethod.GET} ) public String testRequestMapping(){ return "success"; }}index.html 添加 post 发送:
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title>首页</title></head><body> <h1>Hello World</h1> <a th:href="@{/target}" rel="external nofollow" >访问目标页面 target.html </a> <br> <a th:href="@{/test1}" rel="external nofollow" >测试@RequestMapping的value属性-->/test1</a><br> <a th:href="@{/test2}" rel="external nofollow" >测试@RequestMapping的value属性-->/test2</a><br> <a th:href="@{/test}" rel="external nofollow" >测试@RequestMapping的method属性-->/test</a><br> <form th:action="@{/test1}" method="post"> <input type="submit"> </form></body></html>
点击 submit 按钮,浏览器报错405:Request method 'POST' not supported。
如果继续添加 post 方法支持,则可以正常访问:
@Controllerpublic class RequestMappingController { @RequestMapping( value = {"/test1"}, method = {RequestMethod.GET, RequestMethod.POST} ) public String testRequestMapping(){ return "success"; }}
@RequestMapping 结合请求方式的派生注解
对于处理指定请求方式的控制器方法,SpringMVC 中提供了 @RequestMapping 的派生注解。
@GetMapping:处理 get 请求的映射@PostMapping:处理 post 请求的映射@PutMapping:处理 put 请求的映射@DeleteMapping:处理 delete 请求的映射使用这种注解,就不需要设置 method 属性了。
@GetMapping("/test3") public String testGetMapping() { return "success"; }
四、@RequestMapping 注解的 params 属性
最常用的还是上面说的 value 和 method 属性,其他的仅做了解。
params 属性通过请求的请求参数匹配请求映射,是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系:
param:要求请求映射所匹配的请求必须携带 param 请求参数
!param:要求请求映射所匹配的请求必须不能携带 param 请求参数
param=value:要求请求映射所匹配的请求必须携带 param 请求参数且 param=value
param!=value:要求请求映射所匹配的请求必须携带 param 请求参数但是 param!=value
举个例子:
@RequestMapping( value = {"/test1"}, method = {RequestMethod.GET, RequestMethod.POST}, params = {"username", "password!=123456"} ) public String testRequestMapping(){ return "success"; }
这里params = {"username", "password!=123456"}的意思就是,请求中必须带有参数username和password,且password参数的值必须不等于123456。
五、@RequestMapping 注解的 headers 属性
同样作个了解。
headers 属性通过请求的请求头信息匹配请求映射,是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系:
header:要求请求映射所匹配的请求必须携带header请求头信息!header:要求请求映射所匹配的请求必须不能携带header请求头信息header=value:要求请求映射所匹配的请求必须携带header请求头信息且header=valueheader!=value:要求请求映射所匹配的请求必须携带header请求头信息且header!=value若当前请求满足 @RequestMapping 注解的 value 和 method 属性,但是不满足 header 属性,此时页面显示404错误,即资源未找到。
@RequestMapping( value = {"/test1"}, method = {RequestMethod.GET, RequestMethod.POST}, params = {"username", "password!=123456"}, headers = {"Host=localhost:8081"} // 这里端口变成8081 ) public String testRequestMapping(){ return "success"; }
我本地端口是 8080,现在去请求页面,会报错。
感谢《尚硅谷》的学习资源。
以上就是SpringMVC的注解@RequestMapping属性及使用的详细内容,更多关于SpringMVC注解@RequestMapping的资料请关注盛行IT其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。