控制器
SpringBoot提供了@Controller和@RestController两种注解来标识此类负责接收和处理HTTP请求。
如果请求的是页面和数据,使用@Controller注解即可;如果只是请求数据,则可以使用@RestController注解。
@RestController的用法
默认情况下,@RestController注解会将返回的对象数据转换成JSON格式。
路由映射:控制器接收前端的请求
@RequestMapping注解主要负责URL的路由映射。它可以添加在Controller类或者具体的类方法上。
@RequestMapping(value="/xxx", method=RequestMethod.GET)等价于@GetMapping("/xxx")
参数传递
Get方式
@RestController//加上这个注解意味着这个类已经变成一个控制器了,可以接收客户端的请求了
publicclassHelloController {
// http://localhost:8080/hello?nickname=小白 单个参数
// http://localhost:8080/hello?nickname=小白&phone=10086 多个参数情况
@RequestMapping("/hello") //这个注解代表之后浏览器发起Get请求之后来访问这个方法
publicStringhello(Stringnickname){
return"hello!"+nickname;
}
}
上面这个方法的参数名要与前端请求的参数名称一致。或者也可以不一致,但是要在方法头里面加上:
@RequestParam("nickname") //这个nickname与前端请求的参数名称一致,然后后端方法的参数名称可以任意。但是这种情况下参数一定要传递(也可以不传递,此时可写成@RequestParam(value="nickname", required=false)),否则此方法将不会被访问。前一种方式方法是可以被访问到的。
@RestController//加上这个注解意味着这个类已经变成一个控制器了,可以接收客户端的请求了
publicclassHelloController {
// http://localhost:8080/hello?nickname=小白 单个参数
// http://localhost:8080/hello?nickname=小白&phone=10086 多个参数情况
@RequestMapping("/hello") //这个注解代表之后浏览器发起Get请求之后来访问这个方法
publicStringhello(@RequestParam("nickname") Stringnickname){
return"hello!"+nickname;
}
}
Post方式
method = RequestMethod.POST
如果前端传递的数据是json格式,那么需要在方法头中加上@RequestBody,如下:
传参格式:(前后端参数名字及类型要一致)
{
"name": "zhangsan",
"pwd": "123"
}
@RequestMapping(value="/postTest2", method=RequestMethod.POST)
publicStringpostTest2(@RequestBodyUseruser){//注解在这里!!!
System.out.println(user.getName());
System.out.println(user.getPwd());
return"Post请求2";
}
普通情况:前后端参数名要一致
@RequestMapping(value="/postTest1", method=RequestMethod.POST)
publicStringpostTest1(Useruser){
System.out.println(user.getName());
System.out.println(user.getPwd());
return"Post请求";
}