@RequestMapping
1.功能
把浏览器发送的请求和@RequestMapping注解所设置的请求信息进行匹配,若匹配成功,则@RequestMapping所标记的方法就是处理当前请求的方法
2.标记的位置
标记在类上,为标记在方法上的@RequestMapping设置一个前缀的路径
标记在方法上,为需要处理的请求设置一个具体的路径
@Controller
@RequestMapping("/test")
public class TestRequestMapping{
@RequestMapping("/success")//此时的真实路径为/test/success
public String success(){
return "success";
}
}
3.属性
1>value属性
@RequestMapping注解的value属性是通过请求的请求路径匹配请求映射
value属性是字符串数组类型,因此可以设置多个请求的请求路径,由注解所标记的方法可以处理value中所设置的每一个路径所对应的请求
@Controller
@RequestMapping("/test")
public class TestRequestMapping{
@RequestMapping({"/success","/abc"})//此时的真实路径为/test/success|/test/abc
public String success(){
return "success";
}
}
<a th:href="@{/test/success}">测试@RequestMapping注解的value属性</a>
<a th:href="@{/test/abc}">测试@RequestMapping注解的value属性</a>
2>method属性
@RequestMapping注解的method属性是通过请求的请求路径匹配请求映射
method属性是RequestMethod数组类型,因此可以设置多种请求方式,当前注解@RequestMapping注解所标记的方法处理的请求的请求方式只要满足其中一种即可
若@RequestMapping注解的Value属性可以匹配,但是method属性无法匹配此时报错405: Request method ‘GET’ not supported
@Controller
@RequestMapping("/test")
public class TestRequestMapping{
@RequestMapping(
value = {"/success","/abc"}//此时的真实路径为/test/success|/test/abc
method = {RequestMethod.GET,RequestMethod.POST}
)
public String success(){
return "success";
}
}
3>params属性
@RequestMapping注解的params属性是通过请求的请求参数匹配请求映射
若@RequestMapping注解的value属性可以匹配,但是params属性无法匹配,页面报错400
params属性中可以使用四种表达式
param :匹配的请求必须携带请求参数param
!param :匹配的请求一定不能携带请求参数param
param=value:匹配的请求必须携带请求参数param,且值必须为value
param!=value:匹配的请求可以不携带请求参数param,若携带则一定不能为value
@Controller
@RequestMapping("/test")
public class TestRequestMapping{
@RequestMapping(
value = {"/success","/abc"}//此时的真实路径为/test/success|/test/abc
params = {"username","password!=123456"}//必须有用户名且密码不能为123456
)
public String success(){
return "success";
}
}
4>headers属性
headers方法同params,因为头信息就是键值对
若@RequestMapping注解的value属性可以匹配,但是headers属性无法匹配,页面报错404
@Controller
@RequestMapping("/test")
public class TestRequestMapping{
@RequestMapping(
value = {"/success","/abc"}//此时的真实路径为/test/success|/test/abc
headers = "Lock Host"
)
public String success(){
return "success";
}
}
4.SpringMVC支持ant风格的路径
可以在@RequestMapping注解的value属性中,设置路径时使用一些特殊的符号表示特殊的含义
?:任意的单个字符,注意不能匹配?和/
*:任意个数的任意字符,注意不能匹配?和/
星星:任意层数的任意目录,注意不能匹配?,使用**时,前后和中间都不可以有其他内容