springmvc(四) springmvc的數據校驗的實現

      so easy~spring

              --WZY緩存

1、什麼是數據校驗?mvc

      這個比較好理解,就是用來驗證客戶輸入的數據是否合法,好比客戶登陸時,用戶名不能爲空,或者不能超出指定長度等要求,這就叫作數據校驗。框架

      數據校驗分爲客戶端校驗和服務端校驗jsp

        客戶端校驗:js校驗ide

        服務端校驗:springmvc使用validation校驗,struts2使用validation校驗。都有本身的一套校驗規則。編碼

      

      

2、springmvc的validation校驗spa

      Springmvc自己沒有校驗功能,它使用hibernate的校驗框架,hibernate的校驗框架和orm沒有關係hibernate

      2.一、添加jar包3d

          

      2.二、在springmvc.xml中配置validator校驗器,基本上直接複製拿過去用便可

          配置如下這些,至關於有人幫咱們寫好了校驗代碼,咱們拿過來直接用就好了,因此須要進行配置。

          

          將validator註冊到適配器中

          方式一(推薦)

            

          方式二:若是配置文件中使用的是非註解方式編寫的適配器,則這樣配置

          

    <!-- 校驗器,配置validator -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
        <property name="validationMessageSource" ref="validationMessageSource"></property>
    </bean>
    
    <!-- 配置validationMessageSource -->
    <bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 指定校驗信息的資源文件的基本文件名稱,不包括後綴,後綴默認是properties -->
        <property name="basenames">
            <list>
                <value>classpath:validationMessageSource</value>
            </list>
        </property>
        <!-- 指定文件的編碼 -->
        <property name="fileEncodings" value="utf8"></property>
        <!-- 對資源文件內容緩存的時間,單位秒 -->
        <property name="cacheSeconds" value="120"></property>
    </bean>
springmvc.xml配置校驗器

 

      2.三、validationMessageSource.properties

        該配置文件的做用就是存儲校驗失敗時的提示文字信息的,也就是至關於將其提取出來放到配置文件中,

          

      

      2.四、在pojo中指定校驗規則

        列舉兩個校驗規則(使用的是註解校驗),notnull和size

          

        一、items.name.size和items.createtime.notnull:就是讀取validationMessageSource.properties中的配置信息。從這裏就能夠理解該配置文件的意義,防止硬編碼。

        二、使用註解對須要進行校驗的屬性進行綁定,而可以使這些註解生效的前提就是配置此前的幾個步驟,2.一、2.二、2.3都必不可少

          其餘校驗規則摘抄自網上

          

          

 

      2.五、controller中對其校驗綁定進行使用

          

        一、@Validated做用就是將pojo內的註解數據校驗規則(@NotNull等)生效,若是沒有該註解的聲明,pojo內有註解數據校驗規則也不會生效

        二、BindingResult對象用來獲取校驗失敗的信息(@NotNull中的message),與@Validated註解必須配對使用,一前一後

        三、代碼中的邏輯應該很容易看懂,就是將result中全部的錯誤信息取出來,而後到原先的頁面將錯誤信息進行顯示,注意,要使用model對象,則須要在形參中聲明Model model,而後菜能使用

 

      2.六、jsp頁面

          

 

      2.七、總結

        其實很是簡單,直接使用註解對其進行校驗就完事了,校驗代碼都替咱們寫好了,只須要配置一下便可。傻瓜式操做。不會的看上面步驟,一步步來。

 

3、分組校驗

      3.一、什麼是分組校驗?

        校驗規則是在pojo 制定的,而同一個pojo能夠被多個Controller使用,此時會有問題,即:不一樣的Controller方法對同一個pojo進行校驗,此時這些校驗信息是共享在這不一樣的Controller方法           中,可是實際上每一個Controller方法可能須要不一樣的校驗,在這種狀況下,就須要使用分組校驗來解決這種問題,

        通俗的講,一個pojo中有不少屬性,controller中的方法1可能只須要校驗pojo中的屬性1,controller中的方法2只須要校驗pojo中的屬性2,可是pojo中的校驗註解有不少,怎樣才能使方法1只校          驗屬性1,方法二隻校驗屬性2呢?就須要用分組校驗來解決了。

      3.二、定義分組

          

        就是定義空的接口,接口類只做爲這個分組標識來使用,看下面的用法,就知道其意義何在了

 

      3.三、使用分組

        

      3.四、controller方法

         在這個方法中,那麼就只會校驗items這個pojo中有ValidationGroup1這個分組的校驗註解,而不會在校驗其餘的

        

 

4、總結

      數據校驗就這樣講完了,很是簡單吧,拿過來就是一頓用便可。

相關文章
相關標籤/搜索