SpringMVC後臺數據校驗

在實際中,一般使用較可能是前端的校驗,好比頁面中js校驗,對於安全要求較高的建議在服務端也要進行校驗。服務端校驗能夠是在控制層conroller,也能夠是在業務層service,controller校驗頁面請求的參數的合法性,在服務端控制層conroller的校驗,不區分客戶端類型(瀏覽器、手機客戶端、遠程調用);service層主要校驗關鍵業務參數,僅限於service接口中使用的參數。這裏主要總結一下何如使用springmvc中後臺Model和controller(控制器)的校驗css

一.環境準備前端

springmvc中咱們使用hibernate的校驗框架validation(注:和hibernate沒有任何關係),使用這個校驗框架的話,須要導入jar包,以下: 
java

        <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>

二.配置檢驗器web

<!--包掃描器-->
    <context:component-scan base-package="day15"></context:component-scan>

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--驗證器-->
    <bean id="myValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        </bean>
        <!--註解驅動-->
<mvc:annotation-driven  validator="myValidator" ></mvc:annotation-driven>

三.在實體類中進行數據校驗spring

/**
 * 後臺數據校驗
 */
public class UserInfo {
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

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

    public String getEmail() {
        return email;
    }

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

    public String getPhone() {
        return phone;
    }

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

/*    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }*/

    /*@NotBlank   用於String
    @NotEmpty   用於集合類型
    @NotNull    用於基本類型*/

    @NotBlank(message = "用戶名不能夠爲空")
    @Size(min = 2,message = "用戶名必須大於2個字符")
    private String username;

    @NotNull(message = "年齡不能夠爲空")
    @Max(value = 100,message = "年齡不能超過100!")
    @Min(value = 0,message = "年齡不能小於0歲!")
    private  Integer age;

    @NotEmpty(message = "郵箱不能夠爲空")
    @Pattern(regexp = "^\\w+@\\w+\\.\\w+$",message = "郵箱格式不正確")
    private String email;

    @NotEmpty(message = "電話不能夠爲空")
    @Pattern(regexp = "^1[3|8|5|9|7]\\d{9}$",message = "電話必須是十一位")
    private String phone;

 /*   @NotEmpty(message = "出生日期不能夠爲空")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;*/
}

四.捕獲校驗錯誤信息api

@Controller
public class ValidatorCotroller {
    @RequestMapping("/first")
    /**
     * BindingResult和@Valid是須要一塊兒使用的
     * 且Binding存在於@Valid以後 是用來存放校驗結果的  從中獲取錯誤信息
     *
     */
    public String doFirst(@Valid UserInfo info, BindingResult result, Model model){
        //result.getErrCount>0是表明着有錯誤信息
        if(result.getErrorCount()>0){
            //獲取到頁面上的錯誤信息屬性值
            FieldError username = result.getFieldError("username");
            //聲明一個Model  將獲取到的UserINfo的屬性值經過addAttribute()放入model中 方便頁面上的值回顯
            model.addAttribute("username",info.getUsername());
            FieldError age = result.getFieldError("age");
            model.addAttribute("age",info.getAge());
           // FieldError birthday = result.getFieldError("birthday");
            FieldError phone = result.getFieldError("phone");
            model.addAttribute("phone",info.getPhone());
            FieldError email = result.getFieldError("email");
            model.addAttribute("email",info.getEmail());
            /**
             * 若是獲取到的錯誤信息爲不等於空
             */
            if(username!=null){
                //經過上邊獲取到的屬性的返回值變量去拿到錯誤信息  而後放入model  在Input文本框後邊顯示錯誤信息
                String nameMessage = username.getDefaultMessage();
                model.addAttribute("nameMessage",nameMessage);
            }
            if( age!=null){
                String  ageMessage = age.getDefaultMessage();
                model.addAttribute("ageMessage",ageMessage);
            }
            if(phone!=null){
                String phoneMessage = phone.getDefaultMessage();
                model.addAttribute("phoneMessage",phoneMessage);
            }
            if(email!=null){
                String emailMessage = email.getDefaultMessage();
                model.addAttribute("emailMessage",emailMessage);
            }
            //若是有錯誤  就返回本頁面
            return "student";
        }
        //不然跳轉到成功的頁面
        return "suecssful";
    }
}
相關文章
相關標籤/搜索