카테고리 없음

@ResponseBody, @RequestBody, @RequestMapping 애노테이션 정리 + ModelAndView

sungw00 2023. 5. 2. 16:21
728x90

@ResponseBody

  • 뷰 페이지가 아닌 응답값을 그대로 반환하기 위해 사용
  • 비동기 처리를 하는 경우에 사용(ajax)
  • 자바 객체를 HTTP 요청의 바디 내용으로 매핑하여 클라이언트로 전달(서버 -> 클라이언트로 전송하는 경우)
  • HttpMessageConverter는 @ResponseBody가 붙은 파라미터가 있으면 HTTP 요청의 미디어 타입과 파라미터의 타입을 먼저 확인한다.
  • @ResponseBody 어노테이션을 사용하면 http 요청 body를 자바 객체로 전달받을 수 있음
  • 서버에서 클라이언트로 응답 데이터를 전송하기 위해 @ResponseBody 어노테이션을 사용하여 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로 전송한다.

@RequestBody

  • HTTP 요청의 본문(body)이 컨트롤러에 그대로 전달된다.(클라이언트 -> 서버로 전송하는 경우)
  • 일반적인 GET/POST 요청 파라미터는 @RequestBody를 사용할 일이 거의 없지만, xml 또는 json 데이터를 전송하는 요청의 경우에는 이 방법이 유용
  • HTTP 요청의 바디 내용을 통째로 자바 객체로 변환해서 매핑된 메소드 파라미터로 전달해줌
  • 클라이언트에서 서버로 필요한 데이터를 요청하기 위해 JSON 데이터를 요청 본문에 담아 서버로 보내면, 서버에서는 @RequestBody 어노테이션을 사용하여 HTTP 요청 본문에 담긴 값들을 자바객체로 변환시켜 객체에 저장한다.

@RequestMapping

  • Spring 4.3부터 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping이 추가되었고, 기존에 쓰던 @RequestMapping 방식을 대체할 수 있게 되었다.
  • 공통적인 url은 class에 @RequestMapping으로 설정하여 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping으로 간단하게 생략이 가능하다.
  • value를 설정하여 요청받을 url을 설정할 수 있고, method를 설정하여 어떤 요청으로 받을 지 정의할 수 있다.(GET, POST, PUT, DELETE 등)

ModelAndView

Model과의 차이점은 데이터와 뷰를 동시에 설정하는 것이 가능하다.

ModelAndView mv = new ModelAndView(); // ModelAndView 객체 생성
mv.setViewName("/board/boardDetail"); // 뷰의 이름
mv.addObject("data", "hello"); // 뷰로 보낼 데이터 값

 

728x90