Web 어노테이션

최종윤·2023년 1월 16일
0

스프링

목록 보기
3/6

출처 https://www.baeldung.com/spring-mvc-annotations

Request Handler Annotations

@RequestMapping

간단히 말해, @RequestMapping은 @Controller 클래스 내의 요청 처리기 메서드를 표시합니다.

클래스 수준에서 이 주석을 적용하면 @Controller 클래스의 모든 처리기 메서드에 대한 기본 설정을 제공할 수 있습니다. 유일한 예외는 Spring이 메서드 수준 설정으로 재정의하지 않고 두 경로 부분을 추가하는 URL입니다.

``
@Controller
@RequestMapping(value = "/vehicles", method = RequestMethod.GET)
class VehicleController {

@RequestMapping("/home")
String home() {
    return "home";
}

}
``

3. @RequestBody

@PostMapping("/save") void saveVehicle(@RequestBody Vehicle vehicle){ }

4. @PathVariable

이 주석은 메서드 인수가 URI 템플릿 변수에 바인딩되었음을 나타냅니다. @RequestMapping 주석을 사용하여 URI 템플릿을 지정하고 @PathVariable을 사용하여 템플릿 부분 중 하나에 메서드 인수를 바인딩할 수 있습니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable("id") long id) { // ... }

method argument의 이름과 part 이름이 같다면 part의 name을 명시하지 않아도 됩니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable long id) { // ... }
required = false 를 추가하여 URI에 경로 변수를 선택적으로 표시할 수 있습니다.
@RequestMapping("/{id}") Vehicle getVehicle(@PathVariable(required = false) long id) { // ... }

5. @RequestParam

HTTP request parameters에 접근하기 위해 사용합니다. parameter 값이 없으면 default값 가지도록 설정 가능합니다.
@RequestMapping Vehicle getVehicleByParam(@RequestParam(defaultValue = "5") long id) { // ... }

@CookieValue, @RequestHeader 는 각각 cookie와 header에 접근할 수 있는데,
@RequestParam과 같은 방법으로 설정합니다.

Response 처리 Annotations

@ResponseBody

메서드 반환 결과를 응답으로 보냅니다. 화면이 아닌 값을 보냅니다.

@ExceptionHandler

요청 처리 메서드에서 Exception 발생시 해당 @이 붙은 메서드를 실행하며, 인자로 발생한 Exception을 전달합니다.

@ResponseStatus

상태 코드를 응답으로 전달하며, @ExceptionHandler와 같이 쓰입니다.

Other Web Annotations

@Controller

@RestController

@Controller + @ResponseBody 모든 요청 처리 메서드의 반환 값을 응답으로 사용합니다.

@ModelAttribute

클래스 수준에 적용시 반환 값을 Model에 추가, parameter에 적용시 이미 저장된 Model을 가져와 parameter에 전달합니다.
클래스 수준 적용시 model.addAttribute("key name", "value")를 통해서도 가능합니다.

profile
https://github.com/jyzayu

0개의 댓글