1. 程式人生 > >SpringMVC後臺數據校驗

SpringMVC後臺數據校驗

年齡 frame drive efault email api 後臺 inter phone

第①步:引入依賴

 <!--數據校驗-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.3.1.Final</version>
        </dependency>

        <!--validation api-->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>

  

第②步:配置Spring.xml

<!--:參數方法名解析器-->
   <bean id="methodNameResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/"/>
       <property name="suffix" value=".jsp"/>
   </bean>
    <!--掃描包下所有的被標註的類-->
    <context:component-scan base-package="cn.happy.day15Validator"/>

    <!--配置驗證器-->
    <bean id="myvalidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
    </bean>

    <!--綁定驗證器-->
    <mvc:annotation-driven validator="myvalidator"/>

  

第③步:實體類註解

package cn.happy.day15Validator;

import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;


/**
 * Created by Administrator on 2018/3/31.
 */
public class UserInfo {

    /**
     * Min:設置最小值
     * Max:設置最大值
     * Message:打印信息
     */
    //指定年齡在18-120之間
    @Min(value = 18,message = "年齡不能小於18歲")
    @Max(value = 120,message = "年齡不能大於100歲")
    private Integer age;

    /**
     * 三種驗證方式
     * @NotEmpty  用於集合
     * @NotNull   用於基本類型
     * @NotBlank  用於引用類型
     * @Size    設置大小
     */
    //非空驗證
    @NotEmpty(message = "用戶名不能為空")
    @Size(max = 20,min = 6,message = "用戶名不能大於20個字符或小於6個字符")
    private String name;

    /**
     * @Pattern  rehexp匹配正則
     */
    @NotEmpty(message = "郵箱不能為空")
    @Pattern(regexp = "^\\w+@\\w+/.\\w+$",message = "郵箱格式錯誤")
    private String email;

    @Pattern(regexp = "^1[35789]\\d{9}$",message = "手機號格式錯誤")
    private String phone;

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

  

第④步:配置處理器

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by Administrator on 2018/3/30.
 */
@Controller
public class FirstController {

    @RequestMapping("/first")
    /**
     * @Valid   驗證對象
     * BindingResult  綁定結果
     * Model    視圖對象
     */
    public String doFirst(@Valid UserInfo userInfo, BindingResult br, Model mv) throws Exception {
        //判斷br中的錯誤數
        if(br.getErrorCount()>0){  //證明至少有一個數據錯誤
            //獲取信息
            FieldError name = br.getFieldError("name");
            FieldError age = br.getFieldError("age");
            FieldError phone = br.getFieldError("phone");
            FieldError email = br.getFieldError("email");

            //獲取錯誤信息
            if(name!=null){
                String namemsg = name.getDefaultMessage();
                //把錯誤信息返回到頁面
                mv.addAttribute("namemsg",namemsg);
            }
            if(age!=null){
                String agemsg = age.getDefaultMessage();
                mv.addAttribute("agemsg",agemsg);
            }
            if(phone!=null){
                String phonemsg = phone.getDefaultMessage();
                mv.addAttribute("phonemsg",phonemsg);
            }
            if(email!=null){
                String emailmsg = email.getDefaultMessage();
                mv.addAttribute("emailmsg",emailmsg);
            }
            //返回請求View
            return "Validator";
        }
        return "doSecond";
    }

}

  配置完成!

SpringMVC後臺數據校驗