B/S 시스템에서 HTTP 요청 데이터의 대부분의 검증은 클라이언트 측에서 수행되며, 이는 단순성 및 사용자 경험 고려 사항을위한 것이지만 보안 요구 사항이 높은 일부 시스템에서는 서버 측 확인이 없어서는 안될 것입니다.
Spring3은 JSR-303 검증 프레임 워크를 지원합니다. JSR-303은 BeanValidation이라는 Java EE 6의 서브 스펙입니다. 공식 참조 구현은 최대 절전 모드 유효성 검사기입니다 (최대 절전 모드 ORM과 관련이 없습니다). JSR 303은 자바 콩의 필드 값을 확인하는 데 사용됩니다.
유효성 검사기는 주로 비밀번호 여부, 비밀번호 길이가 6 자리보다 크지 여부, 순수한 디지털 등의 여부와 같은 비어 있는지와 같은 사용자가 제출 한 데이터의 합리성을 확인합니다. 그렇다면 스프링 부팅에서 강력한 검증 프레임 워크를 어떻게 사용할 수 있습니까?
유효성 검사 및 SpringBoot와 결합합니다
1. Bean에 태그를 추가하십시오
코드의 일부 :
태그는 속성에 추가되어야합니다. @NotBlank 태그의 의미는 기사 끝에 설명됩니다.
공개 클래스 사용자 {개인 정수 ID; @NotBlank (message = "{user.name.notblank}") 개인 문자열 이름; 개인 문자열 사용자 이름;2. 컨트롤러에서 확인을 켜십시오
컨트롤러의 요청 매개 변수에 @Validated 태그를 추가하여 확인을 활성화합니다.
@requestmapping (method = requestmethod.post) public user create (@requestbody @validated user user) {return userervice.create (user); }3. 리소스에서 새 오류 메시지 구성 파일 생성
리소스 디렉토리에서 새 프롬프트 메시지 구성 파일 "validationMessages.Properties"생성
참고 : SpringBoot가 ClassPath의 validationMessages.Properties에서 오류 메시지를 자동으로 읽으므로 이름은 "validationMessages.Properties"여야합니다.
ValidationMessages.Properties 파일은 ASCII로 인코딩됩니다. 데이터 유형은 핵심 값입니다. 키 "user.name.notblank"는 첫 번째 단계 Bean의 교정기에서 해당 메시지 값입니다.
값은 신속한 메시지이지만 ASCII입니다. (콘텐츠는 "이름이 비어있을 수 없다"))))
4. 예외 처리기를 사용자 정의하여 오류 메시지를 포착합니다
확인이 실패하면 예외가 발생합니다. 예외 메시지는 ValidationMessages.Properties에서 구성된 신속한 정보입니다. 예외 핸들러는 여기에 정의되어 있습니다. 예외 정보를 캡처하고 (검증을 전달하지 못하는 여러 항목이있을 수 있기 때문에 균일하게 캡처하고 처리됩니다) 프론트 엔드에 던져 넣습니다. (이것은 전면 및 백엔드 별도 발신자입니다)
public void methodArgumentNotValidexception (예외, httpservletrequest request, httpservletrepsonge 응답) {logger.error ( ":" + commonutil.gethttpclientinfo (요청), Ex); MethodArgumentNotValidexception C = (MethodArgumentNotValidexception) Ex; 목록 <sbjecterror> errors = c.getBindingResult (). getAllErrors (); StringBuffer errormsg = new StringBuffer (); errors.stream (). foreach (x-> errormsg.append (x.getDefaultMessage ()). Append ( ";"); pouplateExceptionResponse (응답, httpstatus.internal_server_error, errormsg.toString ()); } private void pouplateExceptionResponse (httpservletResponse 응답, httpStatus errorcode, string errormessage) {try {response.senderRor (errorCode.Value (), errormessage); } catch (ioexception e) {logger.error ( "응답 오류를 채우지 못한", e); }}5. 일부 태그 의미를 첨부하십시오
| 한계 | 설명 |
|---|---|
| @null | NULL로만 제한하십시오 |
| @notnull | 한계는 무효가되어서는 안됩니다 |
| @assertfalse | 한계는 거짓이어야합니다 |
| @asserttrue | 한도는 사실이어야합니다 |
| @decimalmax (value) | 한계는 지정된 값보다 크지 않은 숫자 여야합니다. |
| @decimalmin (가치) | 한계는 지정된 값보다 숫자가되어야합니다. |
| @digits (정수, 분수) | 한계는 소수점이어야하며 정수 부품의 숫자 수는 정수를 초과 할 수 없으며 분수 부품의 숫자 수는 분수를 초과 할 수 없습니다. |
| @미래 | 한도는 미래 날짜 여야합니다 |
| @max (값) | 한계는 지정된 값보다 크지 않은 숫자 여야합니다. |
| @Min (가치) | 한계는 지정된 값보다 숫자가되어야합니다. |
| @과거 | 한도는 과거 날짜 여야합니다 |
| @pattern (value) | 제한은 지정된 정규 표현식을 준수해야합니다 |
| @Size (max, min) | 제한 문자 길이는 최소와 최대 사이에 있어야합니다 |
| @과거 | 주석의 요소 값 (날짜 유형)이 현재 시간보다 이른지 확인하십시오. |
| @notempty | 검증 주석의 요소 값이 널이 아니고 비어 있지 않은지 확인하십시오 (문자열 길이는 0이 아니고, 수집 크기는 0이 아님) |
| @NotBlank | 주석의 요소 값이 비어 있지 않은지 확인하십시오 (NULL이 아니라 첫 번째 공간을 제거한 후 길이가 0 임). @notempty와 달리 @NotBlank는 문자열에만 적용되며 비교할 때 문자열 공간을 제거합니다. |
| @이메일 | 주석의 요소 값이 이메일인지 확인하고 일반 표현 및 플래그를 통해 사용자 정의 이메일 형식을 지정할 수도 있습니다. |
예
@pattern (regexp = "^[a-za-z0-9]+$", message = "{ac예 2
여기서 우리는 주로 학습을 위해 주석을 사용합니다. 먼저 우리의 요구에 대해 이야기합시다.
페이지에는 Demo.html이 있습니다. 두 가지 요소 이름 입력 상자, 비밀번호 입력 라이브러리 및 제출 버튼이 있습니다.
백그라운드에 제출 한 후 유효성 검사기를 사용하여 확인을 한 다음 오류가 있으면 Demo.html로 전달하십시오.
먼저 엔티티 클래스를 작성하여 사용자 입력을 받고 유효성 검사기 주석을 사용하여 다음을 확인합니다.
패키지 com.kfit.demo; import org.hibernate.validator.constraints.length; import org.hibernate.validator.constraints.notempty; 공개 클래스 데모 {private long id; @NotEmpty (Message = "Name이 비어질 수 없음") 개인 문자열 이름; @notempty (메시지 = "암호가 비어있을 수 없다") @length (min = 6, message = "암호 길이가 6 자리 미만일 수 없음") 개인 문자열 비밀번호; publiclong getid () {return id; } publicVoid setId (longid) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getPassword () {return password; } public void setpassword (문자열 비밀번호) {this.password = password; } @override public String toString () {return "demo [id =" + id + ", name =" + name + ", password =" + password + "]; }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.