在Struts2中如何做服務端表單校驗

服務器端表單校驗

表單校驗有兩種:

  • 客戶端校驗:js,優點(校驗無延遲,速度快)缺點(數據不安全)
  • 服務端校驗:服務器的程序校驗。優點(數據安全)缺點(校驗需要走服務端程序,在網絡延遲較高的情況下速度過慢)
    服務端表單校驗,是表單安全的最後一道防線。

對於Struts2如何實現服務端校驗:

我們有三種方式:
- java編碼方式
- xml配置方式
- 註解方式
推薦 xml配置方式方式:代碼與校驗配置解耦合。

xml配置校驗表單:

業務:登錄的時候,用戶名或密碼不能爲空。如果爲空,提示用戶。
操作:
第一步:在action類所在的包中,建立一個xml文件,
這裏寫圖片描述
名字必須滿足規則:
action的類名-action的名字-validation.xml
ps:想對UserAction的login方法進行表單校驗。
那麼這裏應該寫成:
UserAction-userAction_login-validation.xml

第二步:引入xml頭信息(約束)
從包中的dtd文件中複製:
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
複製後的效果:
這裏寫圖片描述
在未聯網的情況下,需要導入本地提示:
這裏寫圖片描述
第三步:配置校驗規則,進行表單校驗
這裏寫圖片描述
這裏寫圖片描述
default.xml裏面定義了很多內置的校驗器:
這裏寫圖片描述
我們的配置:

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <!-- 用戶名 -->
    <!-- name:字段名(屬性名) -->
    <field name="name">
        <!-- 指定校驗器 :內置,也可以自定義'
        type:校驗器的名字,字段值不能爲空
        -->
        <field-validator type="requiredstring">
            <!-- 校驗沒有通過的提示信息,底層代碼相當於:addFieldError(xxx,msg)-->
            <message>用戶名不能爲空</message>
        </field-validator>
    </field>
    <!-- 密碼 -->
    <field name="password">
        <!-- 指定校驗器 :內置,也可以自定義'
        type:校驗器的名字,字段值不能爲空
        -->
        <field-validator type="requiredstring">
            <!-- 校驗沒有通過的提示信息,底層代碼相當於:addFieldError(xxx,msg)-->
            <message>密碼不能爲空</message>
        </field-validator>
    </field>

</validators>

第四步:配置input結果集視圖:
在測試表單校驗不通過的時候,頁面異常:
這裏寫圖片描述
原因:workflow攔截器自動會判斷三個錯誤集合是否有數據,有則,跳轉到input結果集視圖。
在struts.xml中配置:
這裏寫圖片描述
頁面對應回顯信息:
這裏寫圖片描述
測試:
這裏寫圖片描述

表單校驗提示信息的國際化(可選)

在上篇博客中說道國際化的問題,在這裏順便提一下表單校驗提示信息的國際化
校驗的文件中配置:
這裏寫圖片描述
國際化文件中配置:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章