1.用法

SpringMVC使用@RequestMapping注解,为控制器指定可以处理哪些URL请求,并且可以指定处理请求的类型(POST/GET),如果@RequestMapping没有指定请求的方式,那么代表这个方法可以同时处理GET/POST请求。

1 @RequestMapping("/helloworld")
2 public String helloWorld() {
3     return SUCCESS;
4 }

URL的地址:http://localhost:8082/helloworld

除此之外,@RequestMapping有两种用法,一是标在类上,二是标在方法上。

① 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录

② 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。

1 @Controller
2 @RequestMapping("/springmvc")
3 public class SpringMVCTest {
4     private static final String SUCCESS = "success";
5     @RequestMapping("/helloworld")
6     public String helloWorld() {
7         return SUCCESS;
8     }
9 }

URL的地址:http://localhost:8082/springmvc/helloworld

 除此之外我们还可以设置处理请求的类型,GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE;

1 @Controller
2 @RequestMapping("/springmvc")
3 public class SpringMVCTest {
4     private static final String SUCCESS = "success";
5     @RequestMapping(value = "/helloworld", method = RequestMethod.GET)
6     public String helloWorld() {
7         return SUCCESS;
8     }
9 }

因为有多个属性,所以我们把方法的路由地址设置为value属性值,把请求方式设置为method,但是如果我们以POST方式去请求helloworld这个方法,就会抛出405错误。

我们打开postman,输入要访问的地址:http://localhost:8090/springmvc/helloworld    之后选择POST请求方式进行访问,我们就可以看到报出405。

SpringDoc请求路径 springmvc请求路径注解_请求头

 

2.补充用法

 @RequestMapping除了能够对请求对url和请求方式进行设置之外,还可以对HTTP请求的内容(请求参数和请求头)进行设置,下面是一个标准HTTP请求的报文格式。

SpringDoc请求路径 springmvc请求路径注解_spring_02

我们可以通过@RequestMapping的params和headers属性进行限制,我们重新来编写一个Controller方法,在@RequestMapping中我们设置了params和header属性,首先来看params属性,它表示的是,接受的请求中,必须包含username参数且age属性不能等于10,headers属性指的是方法处理的请求头中必须含有Accept-Language,且属性相同,这里一定要注意Accept-Language后面跟的是=。

1 @RequestMapping(value = "/testParamAndHeaders", params = {"username", "age!=10"}, headers = {"Accept-Language=zh,zh-CN;q=0.9,en;q=0.8"})
2     public String testParamAndHeaders() {
3         System.out.println("testParamAndHeaders");
4         return SUCCESS;
5     }

我们在index.jsp定义如下代码进行测试:

1 <a href="/springmvc/testHeadersAndParams">Test HeadersAndParams</a> <br><br>

①什么参数都不传,结果会报400

SpringDoc请求路径 springmvc请求路径注解_SpringDoc请求路径_03

 

 

 ②如果只传递了username,是可以正常访问的,后台拿到的age为null所以可以正常访问

SpringDoc请求路径 springmvc请求路径注解_请求头_04

 

③如果传入用户名和年龄为10,也是会报400

SpringDoc请求路径 springmvc请求路径注解_mvc_05

 

④当传入用户名为wzy,年龄为11时,即可正常访问

SpringDoc请求路径 springmvc请求路径注解_请求头_06

并且我们通过谷歌的调试工具可以发现,确实发送了指定的请求头。

SpringDoc请求路径 springmvc请求路径注解_SpringDoc请求路径_07