@RequestMapping注解
如果在两个类都写了 映射同一个请求地址 那请求这个这个地址会500,也会报错。其实就是两个方法的访问路径相同,会报错
解决的方法就是在类上使用@RequestMappin注解 加了一层路径
属性都是数组

value属性
404
method属性
405
不设置都接收 get/post

查询用户信息用get,新增用户信息post,修改用put,删除用delete
params属性
400
与上面两个不一样 parames 设置的条件必须全部满足
params = {"username","password !=123456"}
上面两个条件必须同时满足
params ={"username"} //必须携带这些参数
params ={"!username"} //一定不能有username 这个参数
params ={"username=admin"} //必须参数username 值必须是admin
params ={"username!=admin"} //必须参数username 值一定不能是admin
Headers属性
404
与params类型 匹配的是请求报文中的请求头

测试代码
<body>
<h1>首页</h1>
<a th:href="@{/hello/t}"> RequestMapping注解测试</a><br>
<a th:href="@{/test1}"> RequestMapping注解的value属性测试</a><br>
<a th:href="@{/test2}"> RequestMapping注解的value属性测试</a><br>
<form th:action="@{/test1}" method="get">
<input type="submit" value="method属性get提交表单">
</form>
<form th:action="@{/test1}" method="post">
<input type="submit" value="method属性post提交表单">
</form>
<a th:href="@{/getMapping}" > GetMapping注解的测试</a><br><!--超链接就是get请求-->
<form th:action="@{/testPut}" method="put">
<input type="submit" value="测试method属性put或delete提交表单 (不行)">
</form>
<a th:href="@{/testParams(username='admin',password=123456)}">测试params属性</a><br>
</body>
@Controller
//@RequestMapping("/hello")
public class RequestMappingController {
@RequestMapping(
value = {"/test1","/test2","/test3"},
method = {RequestMethod.GET,RequestMethod.POST}, //限制了请求方式
params ={"username"} //必须携带这些参数
//params ={"!username"} //一定不能有username 这个参数
//params ={"username=admin"} //必须参数username 值必须是admin
//params ={"username!=admin"} //必须参数username 值一定不能是admin
)
public String success(){
return "success";
}
@GetMapping("/getMapping")
public String testMapping(){
return "success";
}
@RequestMapping(value = "/testPut" , method = RequestMethod.PUT)
public String testPut(){
return "success";
}
@RequestMapping(value = "/testParams", params = {"username"})
public String testParams(){
return "success";
}
}
@Controller
public class TestController {
@RequestMapping("/")
public String index(){
return "index";
}
}
SpringMVC支持ant风格路径
?: 必须有且只有一个字符 可以数字 字母 ±冒号 等等( /和? 不行)
空格也能匹配?![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCcO2o6l-1648536751400)(D:\学习\截图\image-20220322202448186.png)]](https://i-blog.csdnimg.cn/blog_migrate/04b800371def589c19665deb4353a581.png)
** 前后不能有内容 比如下面的是错的(两颗星真的是两颗星,这样就相当于上面的那个)
@RequestMapping(value = "/a**a/testAnt")
正确的使用方式:
@RequestMapping(value = "/**/testAnt")
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f29N9ff3-1648536751402)(D:\学习\截图\image-20220322211915244.png)]](https://i-blog.csdnimg.cn/blog_migrate/58188718a5bf0e1594ce6d6e02988ab1.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HHdg0QcG-1648536751404)(D:\学习\截图\image-20220322211959302.png)]](https://i-blog.csdnimg.cn/blog_migrate/e3f0b621801f13db9902cdce3d777bd0.png)

SpringMVC支持路径占位符
在restful风格里原来的请求参数 变成了请求路径 的方式去传输
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAagMDcc-1648536751405)(D:\学习\截图\image-20220322212547601.png)]](https://i-blog.csdnimg.cn/blog_migrate/5f1decc8791c4db427831223464ebc9b.png)
感觉是在服务器端规定了每个/分隔符中间表示的value的含义,这样传输的时候必须根据这个格式来,比如第一个为id,第二个为name,反过来都不行,不过的确前端不需要name了
所以说支持路径中的占位符是在服务器端设置一个占位符,请求发送后会将对应的值赋给占位符
//占位符的id自动赋值给形参id
//如果前端请求/testPath 没有占位直接404
@RequestMapping(value = "/testPath/{id}") //testPath/1/ad 这样也是404 多了少了都会报错
public String testPath(@PathVariable("id") Integer id){
System.out.println(id); //但是貌似不写@PathVariable 也行
return "success";
}
@RequestMapping(value = "/testPath/{id}/{username}")
public String testPath2(@PathVariable("id") Integer id,@PathVariable("username") String username){
System.out.println(id);
System.out.println(username);
return "success";
}
本文详细介绍了Spring MVC中@RequestMapping注解的使用方法,包括其不同属性的作用及如何通过这些属性实现灵活的请求映射。
1513

被折叠的 条评论
为什么被折叠?



