@Controller
:
@Controller
作用:标注于任意一個類上,聲明該類屬于Controller。通常該注解會與
@ResponseBody
,
@RequestBody
等注解搭配使用。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home")
public String home(){
return "This is test information.";
}
}
@RestController
:
@RestController
作用:标注于任意一個類上,聲明該類屬于Controller。與
@Controller
不同的是,
@RestController
可以傳回JSON内容,而單獨
@Controller
則不可以。
@RestController
無法跳轉頁面。
示例:
@RestController
@RequestMapping("/test")
public class MainController{
@Resource
private SearchService searchService;
@RequestMapping("/home.json")
public List<String> home(){
List<String> list = searchService.findAll()
return list;
}
}
說明:當用戶端通路
/test/home.json
時,會傳回一個JSON對象。
@RequestMapping
:
@RequestMapping
作用:映射HTTP請求到某個具體方法。參數内容如下:
-
:請求的URL;value
-
:HTTP請求方式,可選值有RequestMethod.GET,RequestMethod.POST等;method
-
:媒體類型,可選值有"application/json"等;consumes
-
:相應的媒體類型,可選值有"application/json"等;produces
-
:請求的參數;params
-
:請求的HTTP頭的值。headers
示例:
@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
:
@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
:
@RequestBody
作用:将json格式的資料轉為java對象。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@RequestMapping("/home")
public String home(@RequestBody User user){
return user.toString();
}
}
@PathVariable
:
@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
:
@GetMapping
作用:标注于某個方法上,聲明該類被通路的方式為Get類型。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@GetMapping("value="/home"")
public String home(){
return "This is test information.";
}
}
說明:當用戶端以Get請求通路
/test/home
時,會通路
home()
方法。
@PostMapping
:
@PostMapping
作用:标注于某個方法上,聲明該類被通路的方式為Post類型。
示例:
@Controller
@RequestMapping("/test")
public class MainController{
@PostMapping("value="/home"")
public String home(){
return "This is test information.";
}
}
說明:當用戶端以Post請求通路
/test/home
時,會通路
home()
方法。