SpringBoot常用注解
- 注意注解均在controller类下使用
@PathVariable注解
注解作用
通过该注解,可以将url请求中的占位符对应参数绑定到处理器方法的参数中
通过@PathVariable(“参数名称”)可以在传入参数名和接受参数名不符时,进行绑定
Java代码如下
@RequestMapping("aa/{username}/mm/{password}")
//@PathVariable参数可以缺省@PathVariable String username
//此时前后端参数名称需要对应
public String tkp(@PathVariable("username") String username, @PathVariable("password")String pwd){
System.out.println(username);
System.out.println(pwd);
return "success";
}
访问方法:
http://localhost:8080/aa/myName/mm/myPwd
输出结果:
@RequestParam注解
注解作用
该注解可以解析用户在前端拼接的参数,如:key=value1&key2=value2的参数列表。
通过该注解可以将url中参数key对应value绑定到方法参数中
Java代码
@RequestMapping("param")
//同样可以缺省
public String param(@RequestParam String uu,@RequestParam("name") String username){
System.out.println(uu);
System.out.println(username);
return uu+"--"+username;
}
访问方法
由?开始的参数列表,key=value格式
http://localhost:8080/param?uu=newUU&name=Username
结果
@RequestBody注解
注解作用
在同步的状态下,接收前台表单提交的实体内容。具体来说,该注解会将前端传递的Json或xml格式的数据转换为Java对象,使用该注解绑定参数。
Java代码
@RequestMapping("resp")
//http传输的最终都是字符串,这里意为将传来的json格式的请求体对应字符串绑定到@RequestBody注解下的body字符串中
public String resp(@RequestBody String body){
System.out.println(body);
return body;
}
访问方法:
html表单;
<!--这里可以写为/resp,意为从根目录开始,否则会访问/res/resp路径-->
<form action="resp" method="post">
<input type="text" name="username"> <br>
<input type="password" name="password"><br>
<input type="submit" value="提交"/>
</form>
提交表单:
结果
问题
为什么不能接受类作为参数
@RequestMapping("resp")
public String resp(@RequestBody Car car){
System.out.println(car);
return "success";
}
@CookieValue注解
@RequestHeader注解
- 该注解将获得HTTP中的Header下内容。具体内容列表如下
Java代码
@RequestMapping("reqHeader")
public String reqHeader(@RequestHeader("Accept") String header){
return header;
}
@RequestHeader中参数可以用来指定获得RequestHeader中的具体特定内容,这里获取的是Accept对应内容
结果
@RequestAttribute注解
@RequestAttribute注解用来标注在控制器方法的参数上,参数的值来自Request作用域。
- 需要注意的是,这里应该将Controller类的@RestController注解改为@Controller,因为@RequestBody注解会自动把返回值作为字符串进行输出
Java代码
@Controller
public class newController {
@RequestMapping("/test1")
public String reqTest1(HttpServletRequest request){
request.setAttribute("name","xxx");
return "forward:/test2";
}
@RequestMapping("/test2")
public String reqTest2(@RequestAttribute("name") String name){
System.out.println(name);
return name;
}
}
因为没有配置“xxx”对应的视图,所以这里浏览器返回页面会报错,自己处理一下即可。