1.輸入驗證
1.1 編程式方式:驗證規則寫到了代碼中,硬編碼,編程式的方式也分爲兩種:
(1)第一種是針對動作類中的所有方法進行驗證
動作類需要實現ActionSupport覆蓋validate
@Override
public void validate() {
if ("".equals(stu.getUsername().trim())){
addFieldError("stu.username","用戶名不能爲空!");
//向map中添加錯誤
//出現錯誤,默認會轉向result=input視圖
}
if ("".equals(stu.getPassword().trim())){
addFieldError("stu.password","密碼不能空!");
}
}
//方法內部: 編寫驗證規則, 不正確添加信息 addFieldError
(2)第二種是針對動作類中的部分方法進行驗證,這個也分爲兩種方式:
第一種:註解的方式
@SkipValidation//這是個忽略
public String findAll(){
System.out.println("findAll");
return null;
}
第二種:只針對該方法進行驗證 (我這個動作類方法名爲regist,針對誰,就叫什麼名字)
public void validateRegist() {
if ("".equals(stu.getUsername().trim())){
addFieldError("stu.username","用戶名你沒寫啊!");
//向map中添加錯誤
//出現錯誤,默認會轉向result=input視圖
}
if ("".equals(stu.getPassword().trim())){
addFieldError("stu.password","密碼不能空!");
}
}
//驗證功能都是由 validation 攔截器所處理的 回顯錯誤信息是由 workflow 攔截器處理的
1.2聲明式驗證:把驗證規則寫到配置文件,這樣更改非常方便。聲明式驗證也分爲兩種:
(1)針對動作類中的所有動作進行驗證
動作類是模型:在Action動作類的包中創建一個名字爲:動作類名-validation.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>
<!--要驗證的字段名-->
<field name="stu.username">
<!--驗證規則
requiredstring:代表的是不是空字符串
required:是不是 null
-->
<field-validator type="requiredstring">
<message>你的用戶名不能爲空啊!</message>
</field-validator>
</field>
</validators>
(2)針對動作類中的部分方法進行驗證
在動作類Action包中創建: 動作類名-動作名-validation.xml 配置文件.
動作名是 struts.xml 中的 action name
<?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>
<field name="stu.username">
<field-validator type="requiredstring">
<message>你TM用戶名爲空!!!</message>
</field-validator>
</field>
<validator type="regex">
<param name="fieldName">stu.username</param>
<param name="regexExpression">
<!--正則表達式-->
<![CDATA[
[a-zA-Z]{3,8}
]]>
</param>
<message>你的名字必須有3-8個字母組成</message>
</validator>
<field name="stu.password">
<field-validator type="regex">
<param name="regexExpression">
<![CDATA[
\d{3,8}
]]>
</param>
<message>你的密碼需要3-8個數字組成</message>
</field-validator>
</field>
<field name="stu.gender">
<field-validator type="required">
<message>性別你TM倒是選一個啊!!!</message>
</field-validator>
</field>
<field name="stu.email">
<field-validator type="email">
<message>郵箱都忘了????</message>
</field-validator>
</field>
<field name="stu.grade">
<field-validator type="int">
<param name="min">0</param>
<param name="max">150</param>
<message>成績在0-150之間</message>
</field-validator>
</field>
</validators>