Controller에서 쓰는 Annotation 정리 -1 : @RequestMapping

Controller에서 쓰는 @Annotation 정리 -1

@RequestMapping

[spring] @RequestMapping

  • url을 컨트롤러에 매핑해주는 역할
  • 기본적인 결합 방법은 클래스 레벨의 @RequestMapping 을 기준으로 삼고, 메서드 레벨의

@RequestMapping 으로 세분화하는 방식으로 사용된다.

🧡클래스 레벨

@Controller
@RequestMapping("/mypage")
public class MypageController { }

💚메서드 레벨

@RequestMapping("/mypage/myInfo")
public ModelAndView mypage() throws Exception {
    ModelAndView model = new ModelAndView();

    return model;
}

@RequestMapping 에 사용할 수 있는 속성

String[] value

  • URL 패턴을 지정하는 속성
@RequestMapping(value="/post")
@RequestMapping(value="/post.*")
@RequestMapping(value="/post/**/comment")
@RequestMapping(value={"/post", "/P"})

RequestMethod[] method

  • RequestMethod는 HTTP 메서드를 정의한 ENUM이다.
  • GET, POST, PUT, DELETE, OPTIONS, TRACE로 총 7개의 HTTP 메서드가 정의되어 있다.
  • @RequestMapping에 method를 명시하면 똑같은 URL이라도 다른 메서드로 매핑해줄 수 있다

✅spring 4.3 부터 spring MVC 컨트롤러 메소드를 위한 새로운 어노테이션이 5개 추가

  • @PostMapping
  • @GetMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

각 어노테이션들은 HttpMethods에 매칭

@RequestMapping(value="/getList", method ={RequestMethod.POST})

➡️

@RequestMapping(value="/getList", method ={RequestMethod.POST})

String[] params

  • 요청 파라미터와 값으로도 구분할 수 있다.
  • String 배열로 여러개 지정할 수 있음.
// /post?useYn=Y 일 경우 호출됨
@RequestMapping(value="/post", params="useYn=Y")

// not equal도 가능
@RequestMapping(value="/post", params="useYn!=Y")

// 값에 상관없이 파라미터에 useYn이 있을 경우 호출됨
@RequestMapping(value="/post", parmas="useYn")

// 파라미터에 useYn이 없어야 호출됨
@RequestMapping(value="/post", params="!useYn")