天天看點

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> home(){
        List<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()

方法。