如果在两个类都写了 映射同一个请求地址 那请求这个这个地址会500,也会报错。其实就是两个方法的访问路径相同,会报错
解决的方法就是在类上使用@RequestMappin注解 加了一层路径
属性都是数组
404
405
不设置都接收 get/post
查询用户信息用get,新增用户信息post,修改用put,删除用delete
400
与上面两个不一样 parames 设置的条件必须全部满足
params = {"username","password !=123456"}
上面两个条件必须同时满足
params ={"username"} //必须携带这些参数
params ={"!username"} //一定不能有username 这个参数
params ={"username=admin"} //必须参数username 值必须是admin
params ={"username!=admin"} //必须参数username 值一定不能是admin
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>
<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";
}
}
?: 必须有且只有一个字符 可以数字 字母 ±冒号 等等( /和? 不行)
** 前后不能有内容 比如下面的是错的(两颗星真的是两颗星,这样就相当于上面的那个)
@RequestMapping(value = "/a**a/testAnt")
正确的使用方式:
@RequestMapping(value = "/**/testAnt")
在restful风格里原来的请求参数 变成了请求路径 的方式去传输
感觉是在服务器端规定了每个/分隔符中间表示的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";
}