SpringBoot Controller

控制器

  • SpringBoot提供了@Controller和@RestController两种注解来标识此类负责接收和处理HTTP请求。

  • 如果请求的是页面和数据,使用@Controller注解即可;如果只是请求数据,则可以使用@RestController注解。

@RestController的用法

  • 默认情况下,@RestController注解会将返回的对象数据转换成JSON格式。

路由映射:控制器接收前端的请求

  • @RequestMapping注解主要负责URL的路由映射。它可以添加在Controller类或者具体的类方法上。

  • @RequestMapping(value="/xxx", method=RequestMethod.GET)等价于@GetMapping("/xxx")

参数传递

  • Get方式

@RestController //加上这个注解意味着这个类已经变成一个控制器了,可以接收客户端的请求了
public class HelloController {

   // http://localhost:8080/hello?nickname=小白 单个参数
   // http://localhost:8080/hello?nickname=小白&phone=10086 多个参数情况
   @RequestMapping("/hello")                  //这个注解代表之后浏览器发起Get请求之后来访问这个方法
   public String hello(String nickname){
       return "hello!"+nickname;
  }


}

上面这个方法的参数名要与前端请求的参数名称一致。或者也可以不一致,但是要在方法头里面加上:

@RequestParam("nickname") //这个nickname与前端请求的参数名称一致,然后后端方法的参数名称可以任意。但是这种情况下参数一定要传递(也可以不传递,此时可写成@RequestParam(value="nickname", required=false)),否则此方法将不会被访问。前一种方式方法是可以被访问到的。

@RestController //加上这个注解意味着这个类已经变成一个控制器了,可以接收客户端的请求了
public class HelloController {

   // http://localhost:8080/hello?nickname=小白 单个参数
   // http://localhost:8080/hello?nickname=小白&phone=10086 多个参数情况
   @RequestMapping("/hello")                  //这个注解代表之后浏览器发起Get请求之后来访问这个方法
   public String hello(@RequestParam("nickname") String nickname){
       return "hello!"+nickname;
  }
}
  • Post方式

method = RequestMethod.POST

如果前端传递的数据是json格式,那么需要在方法头中加上@RequestBody,如下:

传参格式:(前后端参数名字及类型要一致)

{

"name": "zhangsan",

"pwd": "123"

}

@RequestMapping(value = "/postTest2", method = RequestMethod.POST)
   public String postTest2(@RequestBody User user){//注解在这里!!!
       System.out.println(user.getName());
       System.out.println(user.getPwd());
       return "Post请求2";
  }

普通情况:前后端参数名要一致

@RequestMapping(value = "/postTest1", method = RequestMethod.POST)
   public String postTest1(User user){
       System.out.println(user.getName());
       System.out.println(user.getPwd());
       return "Post请求";
  }