Spring MVC 常用注解
2020-05-20 本文已影响0人
_菩提本无树_
一.请求常用注解
@Controller(控制层)
@RequestMapping()
value:指定请求的实际地址
@Controller
@RequestMapping(value = "/user")
public class AyUserController{
@RequestMapping(value = {
"",
"/page",
"page*",
"view/*"
})
public String hello(Model model){
model.addAttribute("message","hello ay");
return "hello";
}
}
//上面的代码下面的这几个请求都可以访问
localhost:8080/user
localhost:8080/user/
localhost:8080/user/page
localhost:8080/user/pageabc
localhost:8080/user/view
localhost:8080/user/view/view
name:给映射地址一个别名
method:GET,POST,PUT,DELETE等
consumer:指定处理请求的提交内容类型(content-type),例如`application/json,text/html`
produces:指定返回的内容类型,返回的内容必须是`request`请求头(accept)中包含的类型
@Controller
@RequestMapping(value = "/user")
public class AyUserController{
@RequestMapping(value = "/produces",produces = {
"application/json"
})
@ResponseBody
String getProduces(){
returen "会返回Json类型的响应";
}
@RequestMapping(value= "/consumes",consumes = {
"application/json",
"application/xml"
})
String getConsumes(){
return "可以同时处理json和xml内容";
}
}
params:指定`request`中必须包含某些参数值时,才能让该方法处理
headers:指定`request`中必须包含某些指定的header值时才能让该方法处理,设置请求头比如"content-type"
@PathVariable("只有一个属性value")
@Controller
@RequestMapping(value = "/user")
public class AyUserController{
@GetMapping("/findById/{id}")
public String findById(@PathVariable String id){
//在请求时url,http://localhost:8080/user/findById/1时,请求中的id=1,
//会将值赋给findById方法中的Id变量
return "hello";
}
}
二.参数绑定注解
@RequestHeader
可以将请求的报头信息映射到处理的方法参数上
@Controller
@RequestMapping(value = "/user")
public class AyUserController{
@GetMapping("/requestHeader")
public String handle(@RequestHeader("Accept-Encoding") String[] encoding,
@RequestHeader("Accept") String[] accept){
return "hello";
}
}
@CookieValue
@Controller
@RequestMapping(value = "/user")
public class AyUserController{
@GetMapping("/cookieValue")
//相当于CookieValue通过cookie的key获取连接中的cookie
public String handle(@CookieValue("JSESSIONID") String cookie){
return "hello";
}
}
@ResponseBody
使用@ResponseBody注解后请求不会走视图请求(我写这个前提是我这个项目是jsp的项目),会将
返回的内容当成json或xml返回前端,一般是ajax请求会使用这个注解,用了请求数据不是界面.
@RequestBody
前端将参数放到请求体中,一般是post请求,当数据量太大时,使用RequestBody接收
@PostMapping("/getUserMessage")
public String getUserMessages(@RequestBody(required = false) List<String> userList){
List<DyUser> list = dyUserService.findUserByIds(userList);
return "hello";
}