Spring WebMVC 모듈의 주요 Annotation

1. 요청 매핑 관련 어노테이션

  • @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping

  • 특정 url패턴에 매핑되는 클래스 및 메서드를 지정하는 주석.

  • Ha

@RequestMapping("/member") // /member로 들어온 요청은 현재 컨트롤러가 처리함을 의미
public class MemberController {

    @RequestMapping("/login") // /member/login으로 들어온 요청은 현재 메서드가 처리함을 의미.
    public String login(...){
    ...
    }
    
    @RequestMapping("/logout") // /member/logout으로 들어온 요청은 현재 메서드가 처리함을 의미.
    public String logout(...){
    ...
    }
    //모든 메서드 mappingUrl의 앞에 /member가 붙게되므로 class영역에 선언한 @RequestMapping
    //주석은 "공통주소"라고 불린다.
}

3. 요청 파라미터 및 객체 바인딩 어노테이션

1. @RequestParam

  • 클라이언트가 요청시 전달한 파라미터값을 바인딩해주는 어노테이션.

  • 요청 파라미터의 key값과 일치하는 변수 지정시 파라미터값을 가져올 수 있다. 속성을 통해 기본값 설정, 필수값 설정등이 가능하다.

@PostMapping("/login")
public String login(
    @RequestParam(value ="userId" , defaultValue = "mmm" , required= false) String userId ){
    ...
    // 속성의 기능이 필요없다면 어노테이션 생략후 String userId만 작성하여도 파라미터값 바인딩이 이루어진다
}

2. @ModelAttribute

  • 파라미터로 전송한 값을 특정 model객체로 자동 바인딩 해주는 어노테이션

  • 명시적으로 추가하든 생략하든 데이터 바인딩은 문제없으나 명시적으로 작성했을때는 추가적인 기능을 이용할 수 있다.

  • DispatcherServlet -> HandlerAdapter -> ArgumentResolver의 흐름으로 처리된다.

@PostMapping("/insert")
public String insert(
@ModelAttribute Member m
// 매개변수에 VO클래스가 추가된 경우의 데이터 바인딩 방법은
// 1) 기본생성자호출
// 2) VO클래스이 필드와 일치하는 파라미터값을 setter메서드를 통해 객체 내부에 초기화시킨다
// @ModelAttribute를 생략해도 동일한 동작이 수행된다.
	) {
	...
}

3. @SeesionAttributes

4. @PathVariable

5. @RequestBody

3. 예외처리 관련 어노테이션

1. @ ExceptionHandler

2. @ ControllerAdvice

3. @ InitBinder

4. 응답처리 관련 어노테이션

  • @ResponseBody

5. 기타

@CrossOrigin

Last updated