SpringMvc常用的注解使用
1 @Controller注解
@Controller注解表明了一个类是作为控制器的角色存在的,
@Controller public class UserController { // ... }
2.@RequestMapping注解
@RequestMapping注解是将请求URL,如“/user”等,映射到整个类上或某个特定的方法上面,一般情况下,类级别的注解负责将一个特定(或符合某种模式)的请求路径映射到一个控制器上,同时通过方法级别的注解来细化映射,即根据特定的HTTP请求方法(GET、POST方法等)、HTTP请求中是否携带特定参数等条件,将请求映射到匹配的方法上。
@Controller public class UserController { @RequestMapping("/user") public String user() { return "user"; } }
没有指定请求必须是GET方法还是PUT/POST或其他方法,@RequestMapping注解默认会映射所有的HTTP请求方法。如果仅想接收某种请求方法,请在注解中指定之@RequestMapping(path = "/user", method= RequestMethod.GET)以缩小范围。
3 @PathVariable注解
@PathVariable注解用在方法参数上,将其与URI模板中的参数绑定起来,
@RequestMapping(path="/user/{userId}", method=RequestMethod.GET) public String userCenter(@PathVariable("userId") String userId, Model model) { UserDTO user = userService.get(userId); model.addAttribute("user", user); return "userCenter"; }
URI模板"/user/{userId}"指定了一个变量名为userId。当控制器处理这个请求的时候,userId的值就会被URI模板中对应部分的值所填充。比如说,如果请求的URI是/userId/1,此时变量userId的值就是1。
4. @GetMapping注解
@GetMapping注解是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。该注解将HTTP GET映射到特定的处理方法上。可以使用@GetMapping("/user")来代替。
@RequestMapping(path="/user",method= RequestMethod.GET)。还有@PostMapping、@PutMapping、@DeleteMapping等同理。
5.@RequestBody注解
@RequestBody注解用于读取Reqeust请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上,再把HttpMessageConverter返回的对象数据绑定到Controller中方法的参数上。
@Controller public class UserController { @GetMapping("/user") public String user(@RequestBody User user) { //...
return "user"; } }
6 @ResponseBody注解
@ResponseBody注解用于将Controller的方法返回对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。比如获取JSON数据,加上@ResponseBody后,会直接返回JSON数据,而不会被解析为视图。
@Controller public class UserController { @ResponseBody
@GetMapping("/user/{userId}") public User info(@PathVariable("userId") String userId) { UserDTO user = userService.get(userId); return user; } }
7@RestController注解
@RestController注解是一个组合注解,即@Controller+ @ResponseBody的组合注解,请求完成后,会返回JSON数据。