SpringBoot篇 - Controller中常用的注解简介

如题所述

第1个回答  2022-07-13
SpringBoot的Controller中经常会用到注解@Controller、@RestController、@RequestMapping、@RequestParam、@PathVariable、@RequestBody等,以下针对这些注解简单使用。

@Controller 定义了一个控制器类,它需要配合使用@RequestMapping 注解的方法才是真正处理请求的处理器。
使用此注解返回的不是Json数据,而是页面类数据。
例如:
先在pom.xml中添加依赖

然后在resources目录下新建templates目录,并且在templates目录下创建hello.html文件。
最后创建HelloController

启动服务,访问localhost:8080/test/hello,页面跳转到hello.html页面。

使用@RestController注解的方法表示一个控制器,返回json。原来返回一个json需要@Controller和@RequestBody配合使用。
例如:

启动服务,访问 http://localhost:8080/jdbc/select?memberNo=20211123146 ,返回:

@RequestMapping可以使用在类上,也可以使用在方法上。
而@GetMapping/@PostMapping 其实就是@RequestMapping和Get/Post的集合
  @GetMapping(value = “hello”) 等价于@RequestMapping(value = “hello”, method = RequestMethod.GET)
@PostMapping(value = “hello”) 等价于@RequestMapping(value = “hello”, method = RequestMethod.POST )

@RequestParam用于获取查询参数。格式为:url?name=AAA
例如:

启动服务,访问 http://localhost:8080/jdbc/select?memberNo=20211123146 即可。

通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。即获取路径参数。格式为:url/{id}
例如:

启动服务,访问 http://localhost:8080/jdbc/select/20211123146 即可。

@RequestBody传递的需要是对象
示例1:

启动服务,使用postman访问 http://localhost:8080/jdbc/memberPost1 即可。查看控制台输出:
Member(memberId=5, shopId=9730231, memberNo=20211123146, mobile=18727460505, openId=#zssyd4U4J3p+czzXkwg+ZQ==)

示例2:

启动服务,使用postman访问 http://localhost:8080/jdbc/memberPost2 即可

示例3:不使用注解

启动服务,使用postman访问 http://localhost:8080/jdbc/memberPost3 ,并在postman的form-data中分别传入key-value

总结:
如果要在Controller层返回一个页面,用注解@Controller;如果让其作为一个接口,用@RestController
在GET请求中(@GetMapping),不能使用@RequestBody。
在POST请求(@PostMapping),可以使用@RequestBody和@RequestParam
@RequestParam注解接受的参数来源于url中,格式为xxx?username=aa&password=456,而@RequestBody注解接收的参数则是来自于requestBody中,即请求体中。
相似回答
大家正在搜