文章目录
一、@RequestMapping介绍
- SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求。
- 标注在
类定义处
:提供初步的请求映射信息。相对于WEB应用的根目录。 - 标注在
方法处
:提供进一步的细分映射信息。相对于类定义处的URL。(若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录) - DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
- 一个方法处理一个请求。
1.标注在方法上
@RequestMapping("/hello01")
public String hello01() {
System.out.println("收到请求,处理中...");
return "success";
}
访问时url为:http://localhost:8080/1.SpringMVC_helloworld/hello01
2.标注在类上
标注在类上可以细化请求路径。
@RequestMapping("/haha")
@Controller
public class RequestMappingTestControler {
@RequestMapping("/hello01")
public String hello01() {
System.out.println("收到请求,处理中...");
return "success";
}
}
访问时url为:http://localhost:8080/1.SpringMVC_helloworld/haha/hello01
二、@RequestMapping的属性
@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数以及请求头映射请求。
属性 | 说明 |
---|---|
value | 默认属性,指定请求的实际地址,可以是具体地址、RestFul动态获取、使用正则设置 |
method | 限定请求方式, 分为GET、POST、PUT、DELETE等 |
params | 规定请求参数 |
headers | 指定request中必须包含某些指定的header值,才能让该方法处理请求。 |
consumes | 指定处理请求的提交内容类型(Content-Type) |
produces | 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。 |
1.method属性
- 默认是接收所有HTTP协议中的请求方式,使用method属性可以限定请求方式。
@RequestMapping(value = "/hello02", method = RequestMethod.POST)
public String hello02() {
System.out.println("收到请求,处理中...");
return "success";
}
如果不是使用规定的方式访问,会报错4xx
2.params属性
- 使用params属性可以规定请求参数
- params = { “username” }:发送请求的时候必须带上一个名为username的属性。
- params = { “!username” }:发送请求的时候必须不携带名为username的属性。
- params = { “username=123” }:发送请求的时候必须带上一个带"username=123"的参数。
- params = { “username!=123” }:发送请求的时候不能带"username=123"的参数。
3.headers属性
规定制定的请求头才可以访问。
例如,谷歌浏览器的请求头:User-Agent:=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36\r\n
@RequestMapping(value = "/hello04", headers = {
"User-Agent:=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36\r\n" })
public String hello04() {
System.out.println("收到请求,处理中...");
return "success";
}
此时只能由谷歌浏览器访问。
4.consumes属性:只接受内容类型是哪种的请求,规定请求头中的Content-Type。
5.produces属性:告诉浏览器返回的内容类型是什么样的,给响应中加上Content-Type。
三、@RequestMapping-ant风格的URL
Ant风格资源地址支持3种匹配符
?
:匹配文件名中的一个字符。*
:匹配文件名中的任意字符。**
:匹配多层路径。
@RequestMapping还支持Ant风格的URL
/user/*/createUser
:匹配/user/aaa/createUser
、/user/*/bbb/createUser
等URL。/user/**/createUser
:匹配/user/createUser
、/user/aaa/bbb/createUser
等URL。/user/createUser??
:匹配/user/createUseraa
、/user/createUserbb
等URL。