관리 메뉴

♠개발자의 작은 서재♠

@ModelAttribute와 @RequestParam을 사용한 데이터 바인딩 본문

Spring MVC/웹 애플리케이션 개발

@ModelAttribute와 @RequestParam을 사용한 데이터 바인딩

♠디지털 모험일지♠ 2024. 10. 21. 20:12

@ModelAttribute와 @RequestParam

1. @ModelAttribute

  • 용도: @ModelAttribute는 HTTP 요청의 파라미터를 Java 객체에 바인딩할 때 사용합니다. 주로 폼 데이터를 처리할 때 유용합니다.

  • 기능:

    • 요청 파라미터의 이름이 객체의 필드 이름과 일치하면 자동으로 값을 설정합니다.
    • 중첩된 객체도 지원합니다. 예를 들어, 사용자 정보와 주소 정보를 함께 받을 때 유용합니다.
  • 예시:

    @PostMapping("/register")
    public String registerUser(@ModelAttribute User user) {
        // user 객체에 바인딩된 데이터 처리
        return "registrationSuccess";
    }

    2. @RequestParam

  • 용도: @RequestParam은 개별 요청 파라미터를 메서드의 매개변수에 직접 바인딩할 때 사용합니다. 간단한 데이터나 단일 값에 대해 유용합니다.

  • 기능:

    • 요청 파라미터의 이름을 지정하여 해당 값을 직접 매개변수에 할당합니다.
    • 필수 여부를 설정할 수 있으며, 기본값을 지정할 수 있습니다.
  • 예시:

    @GetMapping("/greet")
    public String greetUser(@RequestParam String name) {
        return "Hello, " + name;
    }

비교

| 기능                  | @ModelAttribute                                | @RequestParam                              |
|---------------------- |------------------------------------------------|----------------------------------------------|
| **주 용도**          | 전체 객체 바인딩                               | 개별 요청 파라미터 바인딩                   |
| **중첩 객체 지원**  | 지원                                           | 지원하지 않음                               |
| **파라미터 이름 매칭** | 요청 파라미터와 객체의 필드 이름이 일치해야 함 | 요청 파라미터의 이름을 직접 지정해야 함   |
| **유효성 검사**      | 객체 전체에 대한 유효성 검사 가능            | 단일 값에 대한 유효성 검사 가능             |
| **코드 간결성**      | 더 적은 코드로 여러 필드를 처리              | 간단한 필드 처리에 적합                     |

이 두 애너테이션은 서로 다른 용도로 사용되지만, Spring의 데이터 바인딩 기능을 효과적으로 활용하는 데 중요한 역할을 합니다.

Comments