중요한 자바 bean validations
@NotNull
**은 주석이 붙은 속성 값이 null이 아닌지 검증@Size
**는 주석이 붙은 속성 값의 크기가 **min
**과 max
속성 값 사이에 있는지 검증; String
, Collection
, Map
, 배열 속성에 적용될 수 있다.@Min
**은 주석이 붙은 속성 값이 value
속성 값보다 작지 않은지 검증@Max
**는 주석이 붙은 속성 값이 value
속성 값보다 크지 않은지 검증@Email
**은 주석이 붙은 속성이 유효한 이메일 주소인지 검증@NotEmpty
**는 속성이 null이거나 비어있지 않은지 검증; String
, Collection
, Map
, 배열 값에 적용될 수 있다.@NotBlank
**는 텍스트 값에만 적용될 수 있으며 속성이 null이거나 공백이 아닌지 검증Create Maven Web Application
Add Dependencies - pom.xml File
Project Structure
Spring Configuration - MVCConfig.java
Servlet Container Initialization - SpringMvcDispatcherServletInitializer.java
Model Class - Customer.java
1. @NotNull
lastName
, freePasses
, email
null
**이 아니어야 함을 지정. message
속성을 통해 유효성 검사 실패 시 표시될 메시지를 지정할 수 있다.2. @Size
lastName
lastName
필드의 길이가 지정된 범위(최소 1) 내에 있어야 함을 지정. 여기서는 최소 한 글자 이상이어야 한다는 조건을 지정하고 있다.3. @Min
및 @Max
freePasses
freePasses
필드의 값이 지정된 최소값(0) 이상이고 최대값(10) 이하임을 지정. 이를 통해 유효한 범위 내의 값을 강제할 수 있다.4. @Pattern
postalCode
postalCode
필드가 지정된 정규 표현식 패턴(^[a-zA-Z0-9]{5}
)과 일치해야 함을 지정다. 이 경우, **postalCode
**는 오직 5개의 문자 또는 숫자만을 포함할 수 있다.5. @Email
email
email
필드가 유효한 이메일 형식이어야 함을 지정. org.hibernate.validator.constraints.Email
어노테이션은 이메일 주소의 형식이 올바른지 검사Controller Class - CustomerController.java
1. InitBinder 설정
initBinder(WebDataBinder dataBinder)
@InitBinder
어노테이션을 사용한 이 메소드는 웹 요청의 데이터 바인딩을 커스터마이징하기 위한 콜백.StringTrimmerEditor
**를 사용하여 문자열 입력값의 앞뒤 공백을 자동으로 제거. 이는 사용자가 폼 필드에 공백만 입력했을 때, 그 값을 **null
**로 처리하여 빈 문자열 입력이 @NotNull
검증에 실패하지 않도록 함.2. 폼 표시 메소드
showForm(Model theModel)
/customer/showForm
경로로 GET 요청이 오면 이 메소드가 호출. Customer
객체를 모델에 추가하여 뷰(customer-form
)에 전달하고, 사용자에게 입력 폼을 표시3. 폼 처리 메소드
processForm(@Valid @ModelAttribute("customer") Customer theCustomer, BindingResult theBindingResult)
/customer/processForm
경로로 POST 요청이 오면 이 메소드가 호출. @Valid
어노테이션은 제출된 Customer
객체의 유효성을 검증하도록 지시. **BindingResult
**는 유효성 검증의 결과를 담고 있다.
customer-form
뷰를 반환하여 사용자에게 에러 메시지와 함께 입력 폼을 표시customer-confirmation
뷰로 이동하여 사용자 입력의 확인 정보를 표시Views - customer-form.jsp
<%@ taglib prefix="form" uri="<http://www.springframework.org/tags/form>" %>
<form:input>
태그는 사용자 입력을 위한 필드를 생성하고, path
속성으로 모델 객체의 특정 속성에 바인딩<form:input path="lastName" />
**는 customer
객체의 lastName
속성에 입력 데이터를 바인딩<form:errors>
태그는 해당 필드에 대한 유효성 검사 에러 메시지를 표시. path
속성은 에러 메시지를 표시할 필드를 지정하고, **cssClass="error"
**는 에러 메시지에 적용될 CSS 클래스를 지정⇒ 사용자가 제출 버튼을 클릭하면 processForm
URL로 데이터를 POST 방식으로 전송하고, 서버에서는 customer
모델 객체에 바인딩된 데이터를 받아 처리. Spring MVC 컨트롤러에서는 이 데이터에 대한 유효성 검사를 수행하고, 검증 실패 시 에러 메시지를 해당 필드 옆에 표시