SpringMVC 학습 시리즈(6)의 데이터 검증

시리즈(4),(5)에서 우 리 는 데 이 터 를 어떻게 연결 하 는 지 보 여 주 었 습 니 다.데 이 터 를 연결 한 후에 우리 가 얻 은 데이터 의 정확성 을 어떻게 확보 합 니까?이것 이 바로 우리 가 본 편 에서 말 하고 자 하 는 내용 인>데이터 검증 이다.
여기 서 저 희 는 Hibernate-vaidator 를 사용 하여 검증 을 했 습 니 다.Hibernate-vaidator 는 JSR-303 검증 프레임 워 크 가 주해 스타일 을 지원 하 는 검증 을 실 현 했 습 니 다.우선http://hibernate.org/validator/에 필요 한 jar 가방 을 다운로드 해 야 합 니 다.여 기 는 4.3.1.Final 을 프 리 젠 테 이 션 으로 하고 압축 을 푼 후에 hibenate-vaidator-4.3.1.Final.jar,jboss-logging-3.1.0.jar,vaidation-api-1.0.0.GA.jar 세 가방 을 프로젝트 에 추가 해 야 합 니 다.
이전 항목 의 springservlet-config.xml 파일 을 설정 합 니 다.다음 과 같 습 니 다.

<!--            --> 
  <mvc:annotation-driven validator="validator" conversion-service="conversion-service" />
  
  <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
    <!--       classpath   ValidationMessages.properties -->
    <property name="validationMessageSource" ref="validatemessageSource"/>
  </bean>
  <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />
  <bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basename" value="classpath:validatemessages"/> 
    <property name="fileEncodings" value="utf-8"/> 
    <property name="cacheSeconds" value="120"/> 
  </bean>
그 중에서의 classpath:vaidatemessages 는 인증 메시지 가 있 는 파일 을 설명 하기 위해 resources 폴 더 에 추가 해 야 합 니 다.
com.demo.web.controllers 패키지 에 ValidateController.자바 내용 을 다음 과 같이 추가 합 니 다.

package com.demo.web.controllers;

import java.security.NoSuchAlgorithmException;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.demo.web.models.ValidateModel;

@Controller
@RequestMapping(value = "/validate")
public class ValidateController {
  
  @RequestMapping(value="/test", method = {RequestMethod.GET})
  public String test(Model model){

    if(!model.containsAttribute("contentModel")){
      model.addAttribute("contentModel", new ValidateModel());
    }
    return "validatetest";
  }
  
  @RequestMapping(value="/test", method = {RequestMethod.POST})
  public String test(Model model, @Valid @ModelAttribute("contentModel") ValidateModel validateModel, BindingResult result) throws NoSuchAlgorithmException{
    
    //           form  
    if(result.hasErrors())
      return test(model);
    return "validatesuccess";   
  }
  
}

그 중에서@Valid@ModelAttribute("contentModel")ValidateModel vaidateModel 의@Valid 는 데 이 터 를@ModelAttribute("contentModel")에 연결 한 후 검증 한 다 는 뜻 이다.
com.demo.web.models 패키지 에 Validate Model.자바 내용 을 다음 과 같이 추가 합 니 다.

package com.demo.web.models;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;

public class ValidateModel{
  
  @NotEmpty(message="{name.not.empty}")
  private String name;
  @Range(min=0, max=150,message="{age.not.inrange}")
  private String age;
  @NotEmpty(message="{email.not.empty}")
  @Email(message="{email.not.correct}")
  private String email;
  
  public void setName(String name){
    this.name=name;
  }
  public void setAge(String age){
    this.age=age;
  }
  public void setEmail(String email){
    this.email=email;
  }
  
  public String getName(){
    return this.name;
  }
  public String getAge(){
    return this.age;
  }
  public String getEmail(){
    return this.email;
  }
  
}

인증 메시지 가 있 는 파일 인 vaidatemessages.properties 파일 에 다음 과 같은 내용 을 추가 합 니 다.

name.not.empty=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002
age.not.inrange=\u5E74\u9F84\u8D85\u51FA\u8303\u56F4\u3002
email.not.correct=\u90AE\u7BB1\u5730\u5740\u4E0D\u6B63\u786E\u3002
email.not.empty=\u7535\u5B50\u90AE\u4EF6\u4E0D\u80FD\u60DF\u6050\u3002
그 중에서 name.not.empty 등 은 Validate Model.java 파일 의 message='xxx'의 xxx 이름 에 대응 합 니 다.뒤의 내용 은 중국 어 를 입력 하면 자동 으로 변 환 된 ASCII 인 코딩 입 니 다.물론 xxx 를 직접 알림 내용 으로 쓸 수도 있 습 니 다.vaidatemessages.properties 파일 을 따로 만 들 지 않 고 추가 할 수도 있 습 니 다.그러나 이것 은 올 바 르 지 않 은 방법 입 니 다.이렇게 하 드 코딩 을 하면 국제 화 를 할 수 없 기 때문이다.
views 폴 더 에 vaidaetest.jsp 와 vaidatesuccess.jsp 두 보 기 를 추가 합 니 다.내용 은 다음 과 같 습 니 다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <form:form modelAttribute="contentModel" method="post">   
    
    <form:errors path="*"></form:errors><br/><br/>
      
    name:<form:input path="name" /><br/>
    <form:errors path="name"></form:errors><br/>
    
    age:<form:input path="age" /><br/>
    <form:errors path="age"></form:errors><br/>
    
    email:<form:input path="email" /><br/>
    <form:errors path="email"></form:errors><br/>

    <input type="submit" value="Submit" />
    
  </form:form> 
</body>
</html>


<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
      !
</body>
</html>
특히 vaidattest.jsp 보기에 서는 모델 이 속성 에 대응 하 는 오류 정 보 를 표시 합 니 다.path="*"일 때 모델 의 모든 속성 에 대한 오류 정 보 를 표시 합 니 다.
실행 테스트:

직접 클릭 하여 제출:

설정 한 오류 정 보 를 정확하게 표시 할 수 있 습 니 다.
오류 데이터 제출:

설정 한 오류 정 보 를 정확하게 표시 하 는 것 을 볼 수 있 습 니 다.
정확 한 데 이 터 를 입력 하여 제출:


검증 성공 을 볼 수 있 습 니 다.
다음은 주요 검증 주해 와 설명 입 니 다.
데이터 검증 내용 은 여기까지 입 니 다.코드 다운로드:demo
더 많은 정 보 는 공식 문 서 를 참고 하 십시오.http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html/validator-usingvalidator.html
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기