스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해 매우 유연하고 실용적이다.
스프링을 사용하는 모든 사람이 사용하고 핸들러 매핑과 핸들러 어댑터의 우선순위가 높은 @RequestMapping을 사용해본다.
시작
- @Controller
- 스프링이 자동으로 스프링 빈으로 등록한다.
- 내부에 @Component가 있어 컴포넌트 스캔 대상이 된다.
- 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식한다.
- 스프링이 자동으로 스프링 빈으로 등록한다.
- @RequestMapping
- 요청 정보를 매핑한다. 해당 URL이 호출되면 이 메서드가 호출된다.
- 애노테이션을 기반으로 동작하기 때문에 메서드의 이름은 임의로 지어도 된다.
- ModelAndView
- 모델과 뷰 정보를 담아 반환하면 된다.
중복되는 부분을 RequestMapping을 클래스 위에 선언해 클래스 단위로 묶고 각 함수에 각각의 URL을 적용하는 방법. 이렇게 해도 작동한다.
String으로 반환하는 얘도 작동한다.
이러한 방법이 우리가 V1을 개선하는 방법이다.
실용적인 방법
실무에서 지금의 방법을 주로 사용한다.
이렇게 클래스단위로 묶고, String을 반환해 사용할 수 있다.
게다가 @RequestParam을 이용해 Form의 파라미터 정보도 위와 같이 파라미터로 얻을 수 있다.
Model도 파라미터로 보내 거기에 addAttribute해 사용할 수 있다.
- @RequestParam
- HTTP 요청 파라미터를 받을 수 있다.
- @RequestParam(“username”) = request.getParameter(“username”)과 거의 같은 코드이다.
- GET 쿼리 파라미터, POST Form 방식 모두 지원한다.
- Model 파라미터
매우 간단하다.
단 여기서 @RequestMapping은 Get, Post를 구분하지 않는다는 단점이 있다.
@GetMapping, @PostMapping
@RequestMapping(value = “/new-form”, method = RequestMethod.GET) 이런식으로 GET, POST를 구분지어 줄 수 있다.
하지만 이것도 너무 길다.
@GetMapping, @PostMapping 애노테이션으로 대체 가능하다.
(@GetMapping 열어보면 @RequestMapping(method = RequestMethod.GET) 이 기반으로 되어있다..)
물론 GET, POST, PUT, DELETE, PATCH 모두 애노테이션이 존재한다.