1. 程式人生 > >Struts2 幾種校驗

Struts2 幾種校驗

1.Struts2手動校驗

1.重寫actionsupport類的validate方法,action需要繼承ActionSupport類

public class StrutshAction extends ActionSupport{

在validate()、validateXxx()方法中使用addFieldError()方法儲存校驗錯誤資訊

//  @Override
//  public void validate() {//手動後臺校驗
//      System.out.println("後臺手動校驗");
//      if(user.getUsername()==null||user.getUsername
().trim().equals("")){ // this.addFieldError("username", "使用者名稱不能為空"); // } // if(user.getPassword()==null||user.getPassword().trim().equals("")){ // this.addFieldError("password", "密碼不能為空"); // } // // } // public void validateLogin() {//手動後臺校驗 只校驗login方法 // System.out.println
("後臺手動校驗"); // if(user.getUsername()==null||user.getUsername().trim().equals("")){ // this.addFieldError("username", "使用者名稱不能為空"); // } // if(user.getPassword()==null||user.getPassword().trim().equals("")){ // this.addFieldError("password", "密碼不能為空"); // } // // }

上面的這種方式會對LoginAction裡面所有的action方法進行攔截校驗,如果只想對login方法進行校驗,需要修改validate方法名為validateLogin。

Action的配置資訊中要加入name=“input”的檢視,確定錯誤顯示頁面

<result name=“input”>/xxx.jsp</result> 

前臺頁面如果要看到錯誤資訊:
1. 頁面引入Struts標籤
2. 用

<form action="user_execute">
使用者名稱:<input type="text" id="username" name="user.username"/><s:fielderror fieldName="user.username"></s:fielderror><br>

密碼:<input type="password" id="password" name="user.password"/><s:fielderror fieldName="user.password"></s:fielderror><br>
<input type="submit" value="login" />

2.Struts2 業務邏輯錯誤校驗

ActionSupport類中提供了addActionError()和addActionMessage()這兩種方法
public void addActionError(String anErrorMessage)
public void addActionMessage(String aMessage)
頁面顯示的時候,使用和來顯示錯誤資訊
顯示addActionError()方法儲存的資訊
顯示addActionMessage()方法儲存的資訊

3 .採用struts2校驗框架

什麼意思?就是把上面的在action裡寫java程式碼驗證使用者名稱密碼的程式碼,寫成一個xml檔案。

校驗規則配置檔案與Action類必須在同一資料夾下
校驗規則配置檔案檔名必須是
Action類名-validation.xml
Action類名-別名-validation.xml
別名對應的是Action配置中name屬性的值 ,也就是隻校驗一個action中的某個方法。
先看一眼程式碼,再說每個標記啥意思

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
 <field name="user.username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>使用者名稱不能為空!</message>
        </field-validator>
    </field>

    <field name="user.password">
        <field-validator type="stringlength">
            <param name="minLength">1</param>
            <param name="trim">true</param>
            <message>密碼不能小於${minLength}位!</message>
        </field-validator> 
    </field>

    <field name="user.address">
        <field-validator type="regex">
        <param name="expression"><![CDATA[([a-zA-Z_]+)]]></param>
        <message>地址只能是英文字元和下劃線</message>
        </field-validator>
     </field>


</validators>

有兩種配置方式:
欄位校驗器配置風格
獲取配置檔案的dtd檔案
xwork-core-2.2.1.jar中xwork-validator-1.0.3.dtd中的註釋內容
根元素是validators,元素下有field或者validator節點
field是欄位校驗,節點下有field-validator子節點
name屬性表示要校驗的欄位名稱
field-validator表示使用的校驗器,有param和message節點
type屬性表示校驗器型別,可從struts2內建校驗器選擇,也可自定義型別
short-circuit屬性表示是否使用短路校驗,預設為false
param表示校驗器的引數
messsage表示欄位校驗沒有通過的時候的提示資訊
validator是非欄位校驗
校驗配置檔案程式碼:(上面用的)



引數值
提示資訊



非欄位校驗器風格程式碼


校驗欄位
引數值
提示資訊

Struts2 的驗證規則大概有以下數種:

required:必填校驗器
requiredstring:必填字串校驗器
int:整數校驗器
double:雙精度浮點數校驗器
date:日期校驗器
expression:表示式校驗器
fieldexpression:欄位表示式校驗器
email:電子郵件校驗器
url:網址校驗器
visitor:Visitor校驗器
conversion:轉換校驗器
stringlength:字串長度校驗器
regex:正則表示式校驗器

常用的驗證規則:

1。必填檢驗
<validators>
<field name="username">
<field-validator type="required">
<message>指定檢驗失敗的提示資訊</message>
</field-validator>
</field>
</validators>


2。必填字串檢驗
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定檢驗失敗的提示資訊</message>
</field-validator>
</field>
</validators>


3。整數檢驗器/浮點檢驗
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年紀必須在1到150之間</message>
</field-validator>
</field>
</validators>


4。日期檢驗
<validators>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range"/>
</field-validator>
</field>
</validators>


5.欄位表示式檢驗器(要求指定欄位滿足一個邏輯表示式)
<validators>
<field name="re_pass">
<field-validator type="fieldexpression">
<!--指定邏輯表示式 -->
<param name="expression"> (pass eq re_pass)</param>
<message>密碼必須和確認密碼相等</message>
</field-validator>
</field>
</validators>


6.郵件地址校驗
<validators>
<field name="email">
<field-validator type="email">
<message>你的電子郵件地址必須是一個有效的電郵地址</message>
</field-validator>
</field>
</validators>


7。網址檢驗
<validators>
<field name="url">
<field-validator type="url">
<message>你的主頁地址必須是一個有效的網址</message>
</field-validator>
</field>
</validators>


8.字串長度檢驗
<validators>
<field name="user">
<field-validator type="stringlength">
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的使用者名稱長度必須在4到20之間</message>
</field-validator>
</field>
</validators>


9.正則表示式檢驗
<validators>
<field name="user">
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您輸入的使用者名稱只能是字母和陣列,且長度必須在4到25之間</message>
</field-validator>
</field>
</validators>


這裡有個地方需要注意:form中要加入validate=“true”這個屬性。

下一篇 Struts2的攔截器