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";
}
上一篇下一篇

猜你喜欢

热点阅读