이둘은 일단 단편적으로 말해서 RequestBody는 데이터형식 json형식 데이터들을 받아올때 좋다고합니다.
ModelAttribute는 html 폼형식의 데이터를 받아올떄 사용하면 좋다고합니다. 
 
아래는 간단한 product post하는 메서드입니다.

@PostMapping("/Products/Post")
    public ResponseEntity<?> PostProducts(@RequestBody Product product,HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if (session == null || session.getAttribute("user") == null) {
            // 세션에 사용자 정보가 없으면 로그인 페이지로 리다이렉트
            return ResponseEntity.badRequest().build();
        }
        productService.save(product);
        return ResponseEntity.ok().build();
    }

RequestBody Product를 받아서 했습니다.
왜냐하면 vue에서 axios는 json형식으로 데이터를 보내는게 일반적이기 때문입니다.
저도 사실 vue는 잘 모릅니다 ㅎㅎ 하지만 프론트 프레임워크를 이해한다면 어떤상황에 데이터를 받을지 알수 있겠죠!
vue:

 const config = {
        headers: {
          'Content-Type': 'application/json'
        }
      };
      try {
        this.axios.post('/Products/Post', data, config)
          .then((response) => {
            this.$router.go(0);
            this.$alert('상품', '등록 성공');
          })
          .catch((error) => {
            this.$alert('상품', '등록 실패');
          });
      } catch (error) {
        // 예외 처리
        console.error(error);
      }

 
폼형식이면 @ModelAttribute 로 Product를 파라미터로 잡아야겟죠! 

@PostMapping("/Products/Post")
    public ResponseEntity<?> PostProducts(@ModelAttribute Product product,HttpServletRequest request) {
        HttpSession session = request.getSession(false);
        if (session == null || session.getAttribute("user") == null) {
            // 세션에 사용자 정보가 없으면 로그인 페이지로 리다이렉트
            return ResponseEntity.badRequest().build();
        }
        productService.save(product);
        return ResponseEntity.ok().build();
    }

아래는 html form 형식의 데이터 전송입니다.

<form action="/Products/Post" method="POST">
  <input type="text" name="name" placeholder="상품명">
  <input type="number" name="price" placeholder="가격">
  <input type="submit" value="전송">
</form>

 

' > Spring' 카테고리의 다른 글

view Resolver란?  (0) 2023.09.03
HTTP 응답 방식  (0) 2023.09.02
spring 구조  (0) 2023.07.03
스프링 mvc 패턴 이해  (0) 2023.06.22
500 error java OutOfMemoryError  (0) 2023.06.21

+ Recent posts