[Day 32 | Spring] Spring MVC 폼 데이터 처리 방식

y♡ding·2024년 11월 26일

데브코스 TIL - Spring

목록 보기
33/46

1. HttpServletRequest

개념:

  • Servlet API를 사용하여 HTTP 요청 데이터를 직접 처리
  • 폼 데이터는 요청 파라미터로 전달되며, request.getParameter(String key)를 통해 데이터를 읽음

특징:

  • 가장 기본적인 방식으로, HTTP 요청 객체를 직접 다룰 수 있음
  • 복잡한 데이터 처리에는 비효율적이며 코드의 가독성이 떨어질 수 있음

예시 상황:

  • 초기 단계의 웹 애플리케이션
  • 기본적인 요청/응답 흐름을 이해하기 위한 실습

2. Model

개념:

  • Spring MVC의 Model 객체를 사용해 데이터를 뷰로 전달
  • 데이터를 뷰에서 접근 가능하도록 키-값 쌍으로 저장

특징:

  • 데이터 전달과 뷰 렌더링을 분리하여 코드 가독성을 높임
  • MVC 패턴에서 컨트롤러가 데이터를 준비하고 뷰는 렌더링만 담당

예시 상황:

  • 여러 데이터를 뷰로 전달해야 하는 경우
  • 뷰 템플릿(Thymeleaf, JSP 등)에서 데이터를 활용

3. ModelAndView

개념:

  • ModelAndView는 데이터와 뷰를 동시에 설정할 수 있는 객체
  • 뷰 이름과 데이터를 한 곳에서 관리

특징:

  • 유연성이 높아 데이터와 뷰를 명시적으로 제어 가능
  • 단순한 경우에는 Model보다 코드가 복잡할 수 있음

예시 상황:

  • 뷰와 데이터를 동적으로 설정해야 하는 경우
  • 뷰의 이름을 조건에 따라 변경할 필요가 있는 경우

4. 사용자 정의 객체 (DTO/VO)

개념:

  • DTO(Data Transfer Object) 또는 VO(Value Object)를 사용해 폼 데이터를 객체로 매핑
  • 컨트롤러에서 객체를 사용해 데이터 전달

특징:

  • 데이터 구조를 명확히 정의하여 코드 가독성 향상
  • 데이터 검증과 변환 로직을 DTO 내에서 처리 가능

예시 상황:

  • 데이터 필드가 많거나, 폼 데이터가 구조화되어 있을 때
  • 데이터 바인딩 및 유효성 검증이 필요한 경우

5. ModelAttribute

개념:

  • Spring MVC에서 폼 데이터를 특정 객체로 자동 매핑
  • 요청 파라미터와 객체의 필드 이름이 일치하면 자동으로 바인딩

특징:

  • 명시적인 데이터 바인딩 코드를 줄이고, 데이터 구조 변경 시 유연하게 대응 가능
  • 뷰에서 객체 전체를 활용할 수 있음

예시 상황:

  • 대규모 폼 데이터를 처리하거나, 재사용 가능한 객체를 뷰에 전달할 때
  • MVC 패턴에서 Model과 데이터 바인딩을 간소화하고 싶을 때

0개의 댓글