@RequestMapping("/")
public String toIndex(){
return "index";
}
@RequestMapping("/")
public String toIndex2(){
return "index";
}
@RequestMapping注解的作用就是将请求地址和处理请求的控制器方法关联起来,建立映射关系。
SpringMVC接收到指定的请求,就会找到映射关系中对应的控制器方法来处理这个请求。
@RequestMapping注解既可以放在方法上,也可以放在类上。
标识方法:设置映射的请求路径的具体信息。
标识类:设置映射的请求路径的初始信息。
例如:如果有如下代码
@RequestMapping("/hello")
@Controller
public class TestRequestMapping {
@RequestMapping("/target")
public String toTarget(){
return "target";
}
}
那么在访问target之前必须加上/hello,否则访问不到target,也就是url为 http://localhost:8080/项目上下文路径/hello/target
。
@RequestMapping({"/test1","/test2"})
public String toTestValue(){
return "testValue";
}
<a th:href="@{/test1}">一个控制器方法匹配多个value测试1a><br>
<a th:href="@{/test2}">一个控制器方法匹配多个value测试2a><br>
@RequestMapping(value="/test3",method=RequestMethod.POST)
public String toTestMethod(){
return "testMethod";
}
<a th:href="@{/test3}">method允许POST请求测试a><br>
<form method="POST" th:action="@{/test3}">
username<input name="username" type="text" /><br>
<input type="submit" value="提交" /><br>
form>
<form method="DELETE" th:action="@{/test3}">
username<input name="username" type="text" /><br>
<input type="submit" value="提交" /><br>
form>
/*这个注解表示请求参数要满足如下要求
1.要有username1,值任意
2.不能有username2
3.要有username3,且值为jack
4.要有username4,且值不能为jack
在写键值对时,如果value为字符串类型,不需要使用单引号括起来,否则会出错
*/
@RequestMapping(value="/test4",params={"username1","!username2","username3=jack","username4!=jack"})
public String toTestParams(){
return "testParams";
}
<a th:href="@{/test4(username3='jack',username4='asd')}">Params没有username1测试a><br>
<a th:href="@{/test4(username1='asd',username2='qw',username3='jack',username4='qew')}">Params有username2测试a><br>
<a th:href="@{/test4(username1='dg',username3='asd',username4='oih')}">Params有username3但值不为jack测试a><br>
<a th:href="@{/test4(username1='ih',username3='jack',username4='jack')}">Params有username4但值为jack测试a><br>
<a th:href="@{/test4(username1='asd',username3='jack',username4='xcv')}">Params参数满足条件测试a><br>
@RequestMapping(value="/test5",headers = {"Host=localhost:8080","Accept-Encoding!=gzip, deflate, br"})
public String toTestHeaders(){
return "testHeaders";
}
<a th:href="@{/test5}">Headers不满足Accept-Encoding条件a><br>
@RequestMapping(value="/test5",headers = {"Host=localhost:8080","Accept-Encoding=gzip, deflate, br"})
public String toTestHeaders(){
return "testHeaders";
}
前缀路径/**/后缀路径
,前缀和后缀可以没有,但是两个星号前后或中间不能有任何内容。SpringMVC路径中的占位符常用于RESTful风格中,它允许将参数作为路径的一部分发送给服务器,而不是以?连接在URL后。该方式传递的参数只能通过@PathVariable注解的value属性中的同名变量获得参数值。
//大括号表示占位符
@RequestMapping("/test6/{id}/{username}")
public String toTest(@PathVariable("id")Integer id,@PathVariable("username")String username){
System.out.println("id = "+id+" "+"username = "+username);
return "test";
}