Controller层注解详解


可根据右边目录快速浏览

@Controller

处理http请求,在对应的方法上视图解析器可以解析return中的jsp或html页面,并且跳转到相应页面

@RestController

在默认情况下,使用了 @RestController 注解即可将返回的数据结构转换成 Json 格式

@RestController注解相当于@ResponseBody + @Controller合在一起的作用(好吧我感觉我自己在讲废话,是本书上都这么写)

So想理解@RestController我们就要点进去看一下该注解都包含了哪些东西。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

可以看到 @RestController注解包含了原来的 @Controller@ResponseBody 注解,@ResponseBody注解是将返回的数据结构转换为 Json 格式。所以在默认情况下,使用了 @RestController 注解即可将返回的数据结构转换成 Json 格式

@GetMapping

用于将HTTP GET请求映射到特定处理程序方法的注释。

里面最重要的就是这一句@RequestMapping(method = {RequestMethod.GET})

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.GET}
)
public @interface GetMapping {

@PostMapping

用于将HTTP POST请求映射到特定处理程序方法的注释。

里面最重要的就是这一句@RequestMapping(method = {RequestMethod.POST})可以看出@GetMapping和@PostMapping的区别并不大

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.POST}
)
public @interface PostMapping {

@RequestMapping

当你还在犹豫用@GetMapping还是@PostMapping时用他们爸爸(@RequestMapping)就对了

@PathVariable

只支持一个属性value,类型是为String,代表绑定的属性名称。默认不传递时,绑定为同名的形参。

@RequestBody

在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个

用来接收前端传递给后端的 JSON 字符串中的数据,但只能使用 POST 的方式提交数据

参考

@PathVariable注解使用

@RequestMapping与@GetMapping和@PostMapping区别


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM