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。
2.补充用法
@RequestMapping除了能够对请求对url和请求方式进行设置之外,还可以对HTTP请求的内容(请求参数和请求头)进行设置,下面是一个标准HTTP请求的报文格式。
我们可以通过@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
②如果只传递了username,是可以正常访问的,后台拿到的age为null所以可以正常访问
③如果传入用户名和年龄为10,也是会报400
④当传入用户名为wzy,年龄为11时,即可正常访问
并且我们通过谷歌的调试工具可以发现,确实发送了指定的请求头。