SpringBoot Controller 控制层常见注解及含义
@Controller
:
作用:标注于任意一个类上,声明该类属于Controller。通常该注解会与@ResponseBody
,@RequestBody
等注解搭配使用。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home")
public String home(){
return "This is test information.";
}
}
@RestController
:
作用:标注于任意一个类上,声明该类属于Controller。与@Controller
不同的是,@RestController
可以返回JSON内容,而单独@Controller
则不可以。@RestController
无法跳转页面。
示例:
@RestController
@RequestMapping("/test")
public class MainController{
@Resource
private SearchService searchService;
@RequestMapping("/home.json")
public List<String, String> home(){
List<String, String> list = searchService.findAll()
return list;
}
}
说明:当客户端访问/test/home.json
时,会返回一个JSON对象。
@RequestMapping
:
作用:映射HTTP请求到某个具体方法。参数内容如下:
-
value
:请求的URL; -
method
:HTTP请求方式,可选值有RequestMethod.GET,RequestMethod.POST等; -
consumes
:媒体类型,可选值有"application/json"等; -
produces
:相应的媒体类型,可选值有"application/json"等; -
params
:请求的参数; -
headers
:请求的HTTP头的值。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("value=“/home”,method="RequestMethod.POST",params="name="jack"")
public String home(){
return "This is test information." + name;
}
}
说明:这里映射一个访问路径为"/test/home
",当客户端使用POST请求访问该路径时,会调用home()
该方法。
@ResponseBody
:
作用:标注某个被访问的方法返回类型前,该方法将会返回JSON类型而不是String或其它类型。需要注意的是,访问路径结尾必须是以.json
结尾,否则可能报错。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home")
public @ResponseBody String home(){
return "This is test information.";
}
}
说明:这里在home()
方法的返回类型String前面加上该注解,会将内容使用Jackson序列化成JSON字符串进行输出。
@RequestBody
:
作用:将json格式的数据转为java对象。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home")
public String home(@RequestBody User user){
return user.toString();
}
}
@PathVariable
:
作用:将URL中的值映射到方法参数中。在@RequestMapping
或其它的括号内使用{}
来获取变量,在被调用的方法参数类型前使用该注解。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home/{name}/{age}")
public @ResponseBody String home(@PathVariable String name, @PathVariable int name){
return "The name is: " + name + " and age is: " + age;
}
}
@GetMapping
:
作用:标注于某个方法上,声明该类被访问的方式为Get类型。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@GetMapping("value="/home"")
public String home(){
return "This is test information.";
}
}
说明:当客户端以Get请求访问/test/home
时,会访问home()
方法。
@PostMapping
:
作用:标注于某个方法上,声明该类被访问的方式为Post类型。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@PostMapping("value="/home"")
public String home(){
return "This is test information.";
}
}
说明:当客户端以Post请求访问/test/home
时,会访问home()
方法。
上一篇: DLL注入