1. 사용법과 예제
우선 각각의 어노테이션의 사용법과 예제를 다루어보고, 각각을 언제 사용하면 좋을지에 대해 알아보도록 하겠습니다.
@RequestParam
@RequestParam 어노테이션은 사용자가 요청시 전달하는 값을 Handler(Controller)의 매개변수로 1:1 맵핑할때 사용되는 어노테이션입니다.
@Controller
public class TestController {
@GetMapping("/")
public String getTestPage(@RequestParam("name") String name) {
System.out.println("이름 : " + name);
return "test";
}
}
예를 들어 사용자가 /?name=test 로 요청한다면, 위 핸들러의 매개변수인 name 에 "test"가 매핑됩니다.
@ModelAttribute
우선 @ModelAttribute는 메소드레벨, 메소드의 파라미터 두군데에 적용이 가능합니다. 하지만 이번 포스팅에서는, 메소드의 파라미터에 사용되는 경우에 대해서 다루도록 하겠습니다.
@ModelAttribute는 사용자가 요청시 전달하는 값을 오브젝트 형태로 매핑해주는 어노테이션입니다.
@Getter
@Setter
public class TestModel {
private String name;
private int age;
}
@RestController
public class TestController {
@GetMapping("/")
public String getTestPage(@ModelAttribute TestModel testModel) {
System.out.println("이름 : " + testModel.getName());
System.out.println("나이 : " + testModel.getAge());
return "test";
}
}
예를들어, name, age를 인스턴스 변수로 가지는 TestModel객체가 존재하고 이를 매개변수로 받기 위해서는 위와 같이 컨트롤러를 생성하고, /?name=JJY&age=10로 요청을 하면 각각의 값이 핸들러의 testModel 객체로 바인딩됩니다. (Setter가 존재해야 합니다.)
- RequestParam : 기본형, String (생략 가능하다.)
- ModelAttribute : 참조형 (생략 가능하다.)
- WebDataBinder
1. BindingResult 클래스를 이용한다.
2. 바인딩 할 객체 바로 뒤에 와야 한다.
@RequestMapping("/TEST")
public String main(@ModelAttribute MyDate date, BindingResult result) {
...
}
// MyDate 객체에 대해 타입 변환 및 데이터 검증이 필요할 때 뒤에 BindingResult 클래스를 작성해준다.
3. WebDataBinder는 1) 타입 변환 2) 데이터 검증을 한 뒤 BindingResult에 저장하고 컨트롤러에 전달하고 컨트롤러가 그 결과를 볼 수 있게 된다.
'Programming > Spring' 카테고리의 다른 글
Spring - 객체지향 설계 5원칙 SOLID (SRP, OCP, LSP, ISP, DIP) (0) | 2023.06.07 |
---|---|
Spring - MVC 기본 동작 원리 (0) | 2023.06.05 |
Spring - @RequiredArgsConstructor (0) | 2023.05.31 |
Spring - 스프링 MVC 구현하기(Mapper, @Valid, 등...) (0) | 2023.05.30 |
Spring - bean, root-context, servlet-context, (0) | 2023.05.29 |