핸들러 어댑터 : 중간에 어댑터 역할을 하고, 다양한 종류의 컨트롤러를 호출할 수 있다.
핸들러: 더 넓은 범위인 컨트롤러
return new ModelAndView("new-form");
// 뷰 리졸버 반환 값
return new ModelAndView("/WEB-INF/views/new-form.jsp");
핸들러 매핑과 핸들러 어댑터가 어떤 것들이 어떻게 사용되는지 알아보자.
스프링이 자동으로 스프링 빈으로 등록한다. (내부에 @Component 애노테이션이 있어서 컴포넌트 스캔의 대상이 됨
@RequestMapping("/hello-basic")
HTTP 요청 파라미터를 @RequestParam
으로 받을 수 있다.
public String requestParamV2(@RequestParam("username") String memberName)
// 파라미터
request.getParameter("username")
GET 쿼리 파라미터, POST Form 방식을 모두 지원한다.
요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다.
@RequestParam String username;
@RequestParam int age;
HelloData data = new HelloData();
data.setUsername(username);
data.setAge(age);
// @ModelAttribute 적용
public String modelAttributeV1(@ModelAttribute HelloData helloData) {}
HTTP 메시지 바디를 직접 조회하는 기능
응답 결과를 HTTP 메시지 바디에 직접 담아서 전달하는 기능
@RequestBody 요청
- JSON 요청 > HTTP 메시지 컨버터 > 객체
@ResponseBody 응답
- 객체 > HTTP 메시지 컨버터 > JSON 응답
@ResponseBody
@PostMapping("/request-body-json-v5")
public HelloData requestBodyJsonV5(@RequestBody HelloData data) {
log.info("username={}, age={}", data.getUsername(), data.getAge());
return data;
}
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {}
참고
https://velog.io/@sossont/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-MVC-1%ED%8E%B8-%EC%A0%95%EB%A6%AC