WebDataBinder
2023. 5. 1. 16:46ㆍSpring Framework/Web on Servlet Stack
웹 요청 파라미터에서 JavaBean 객체로 데이터를 바인딩하기 위한 특별한 DataBinder.
웹 환경을 위해 설계되었지만, 서블릿 API에 종속되지 않으며, ServletRequestDataBinder와 같은 더 구체적인 DataBinder 변형의 기본 클래스 역할을 합니다. 이는 주로 컨트롤러 메서드에서 폼 데이터를 처리하거나, JSON 데이터를 객체로 변환할 때 사용됩니다.
경고: 데이터 바인딩은 객체 그래프의 일부가 외부 클라이언트에 의해 접근되거나 수정되도록 노출됨으로써 보안 문제가 발생할 수 있습니다. 따라서 데이터 바인딩의 설계 및 사용은 보안과 관련하여 신중하게 고려되어야 합니다.
주요 기능:
- 데이터 바인딩: HTTP 요청 파라미터를 Java 객체의 속성에 바인딩합니다. 예를 들어, 폼 데이터를 전송할 때, 해당 데이터를 특정 객체에 자동으로 매핑할 수 있습니다.
- 유효성 검사:
@Valid
와 함께 사용하여, 데이터를 바인딩하는 과정에서 유효성 검사를 수행할 수 있습니다. 이를 통해 잘못된 데이터 입력을 방지할 수 있습니다. - 변환기 설정:
WebDataBinder
는 특정 타입의 데이터를 변환하기 위한PropertyEditor
나Converter
를 등록할 수 있습니다. 예를 들어,String
타입의 데이터를 날짜 객체로 변환하는 커스텀 변환기를 설정할 수 있습니다.
사용 예시:
컨트롤러에서 @InitBinder
애노테이션을 사용하여 WebDataBinder
를 설정할 수 있습니다.
@Controller
public class MyController {
@InitBinder
public void initBinder(WebDataBinder binder) {
// 커스텀 에디터 등록 (예: 날짜 형식 변환)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
@PostMapping("/submit")
public String handleForm(@ModelAttribute("formObject") FormObject formObject, BindingResult result) {
if (result.hasErrors()) {
return "errorPage";
}
return "successPage";
}
}
이 코드에서는 @InitBinder
를 통해 날짜 형식을 변환하는 커스텀 변환기를 등록하고, POST 요청으로 전송된 데이터를 FormObject
에 바인딩합니다.
WebDataBinder
는 Spring MVC에서 데이터 바인딩과 유효성 검사를 효율적으로 처리하는 중요한 도구입니다.
'Spring Framework > Web on Servlet Stack' 카테고리의 다른 글
@RequestHeader (0) | 2024.10.09 |
---|---|
Annotated Controllers[1] (1) | 2024.10.06 |
Filter (0) | 2023.05.19 |
Dispatcher Servlet (0) | 2023.05.02 |
Servlet (0) | 2023.04.17 |