requestmapping注解作用spring boot,springmvc中@requestmapping的作用

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: