데이터 검증 with Spring
Spring MVC에서 WebDataBinder를 통해서 데이터를 검증 할 수 있습니다
WebDataBinder
는 요청 매개변수를 JavaBean 객체에 바인딩하는 Spring MVC 기능입니다.
유형 변환 및 데이터 유효성 검사를 처리합니다.
@RequestMapping("/getYoilMVC5")
public String main(@ModelAttribute MyDate date, BindingResult result){}
이 코드에서 WebDataBinder는 요청 매개변수를 MyDate
개체에 바인딩합니다.
BindingResult
는 이 프로세스의 결과 및 관련 오류를 보유합니다.
@InitBinder
@InitBinder
주석은 WebDataBinder
를 초기화하는 메서드를 식별합니다.
이는 기본 데이터 바인딩 동작을 사용자 지정하는 방법을 제공합니다.
즉 해당 기능이 실행 되는 순간에 바로 작동합니다
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
이 예에서 @InitBinder
메서드는 특정 날짜 형식을 사용하여 문자열을 Date
개체로 변환하는 CustomDateEditor
를 등록하는 데 사용됩니다.
Validator
Spring MVC의 Validator
인터페이스는 객체를 검증하는 메커니즘을 제공합니다.
유효성 검사 규칙을 정의하고 개체가 해당 규칙을 충족하는지 확인할 수 있습니다.
Validator 등록 방법
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
위의 예에서 myServlet
은 web.xml
에 정의된 DispatcherServlet의 이름입니다. contextConfigLocation
매개변수는 유효성 검사기 등록을 포함해야 하는 Spring 구성 파일의 위치를 지정합니다.
<beans>
<bean id="myObjectValidator" class="com.example.MyObjectValidator"/>
<mvc:annotation-driven validator="myObjectValidator"/>
</beans>
Spring 구성 파일에서 유효성 검사기 빈을 등록하고 <mvc:annotation-driven>
요소를 사용하여 유효성 검사를 활성화할 수 있습니다.
글로벌 유효성 검사기 및 로컬 유효성 검사기
- Global Validator: Global Validator는 서블릿 컨텍스트에 등록되며 모든 요청 및 모델에 자동으로 적용됩니다.
- 로컬 유효성 검사기: 로컬 유효성 검사기는 특정 컨트롤러 또는 처리기 메서드에 고유하며 연결된 모델 개체에만 적용됩니다
public class MyObjectValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return MyObject.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
// Validation logic here
}
}
위의 예에서 로컬 유효성 검사기 MyObjectValidator
는 Validator
인터페이스를 구현합니다.
즉 특정 컨트롤러 또는 처리기 메서드에 고유하며 해당 메서드와 연결된 모델 개체에만 적용됩니다.
수행하는 기능은 MyObject
인스턴스 유효성 검사를 지원하고 validate
메서드에서 유효성 검사 논리를 정의합니다.
수동 검증 및 자동 검증
수동 유효성 검사를 사용하면 유효성 검사 프로세스가 수행되는 시기와 위치를 제어할 수 있습니다.
반면에 자동 유효성 검사는 요청 매개 변수를 모델 개체에 바인딩할 때 자동으로 유효성 검사를 트리거하여 프로세스를 단순화합니다.
수동 검증
수동 유효성 검사에서는 ‘Validator’ 인스턴스의 ‘validate’ 메서드를 호출하여 유효성 검사 프로세스를 명시적으로 트리거할 수 있습니다.
이를 통해 코드의 원하는 지점에서 유효성 검사를 수행할 수 있습니다.
Validator validator = new MyObjectValidator();
MyObject object = new MyObject();
Errors errors = new BeanPropertyBindingResult(object, "myObject");
validator.validate(object, errors);
자동 검증
Spring은 WebDataBinder를 사용하여 요청 매개변수를 모델 객체에 바인딩하는 과정에서 자동 검증을 제공합니다.
요청이 이루어지면 Spring은 연관된 모델 객체에 대한 유효성 검사 프로세스를 자동으로 호출합니다.
@RequestMapping("/submit")
public String submitForm(@ModelAttribute("myObject") @Valid MyObject myObject, BindingResult result) {
// Controller logic
}
위의 예에서 ‘@Valid’ 주석은 자동 유효성 검사를 활성화하는 데 사용됩니다. MyObject
인스턴스는 submitForm
메소드가 호출될 때 자동으로 검증되며 모든 검증 오류는 BindingResult
객체에 저장됩니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
JDBC (0) | 2023.06.02 |
---|---|
데이터 변환 with Spring (0) | 2023.05.27 |
Spring MVC 예외 처리 및 상태 코드 매핑 가이드 (0) | 2023.05.26 |
예외처리 with Spring (0) | 2023.05.26 |
Spring MVC의 Redirect와 Forward (2) | 2023.05.19 |