Struts2中請求引數校驗

周江霄發表於2015-05-31

    在Struts2中,請求引數的校驗要放在服務端進行。其實我們在做.NET的專案時,使用過EasyUI,EasyUI有各種校驗機制,那會是在客服端就直接對輸入引數進行了校驗。但是我們的Struts框架也是蠻強大的,它本身就給我們提供了非常詳細的校驗機制。

 

    1.手動校驗


    使用手動校驗,需要一下這麼幾個條件:

    ①你的Action要繼承ActionSupport介面;

    ②重寫validate介面,如果屬性有問題,通過addFieldError(String,String)方法儲存錯誤資訊.

    ③如果向fieldError中儲存了錯誤資訊,workflow攔截器就會跳轉到input檢視.

    ④在input檢視上通過<s:fielderror>來顯示錯誤資訊.可以通過 <s;fielderror fieldName="">


    程式碼展示:


package cn.tgb.action;

import cn.tgb.model.People;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PeopleAction01 extends ActionSupport implements ModelDriven<People>{
	private People people = new People();
	@Override
	public People getModel() {
		return people;
	}	
	
	public String register(){
		System.out.println(people.getUsername()+"註冊成功了~");
		return null;
	}
	
	public String longin(){
		System.out.println(people.getUsername()+"登陸成功了~");
		return null;
	}
	
	//重寫ActionSupport中的validate方法
	@Override
	public void validate() {
		System.out.println("引數校驗");
	}
	
	public void validateRegedit(){
		System.out.println("註冊方法引數校驗");
	}
	
	public void validateLogin(){
		System.out.println("註冊方法引數校驗");
	}	
}

    2.配置校驗


    使用配置校驗,需要滿足下面的條件:

    ①你的Action要繼承ActionSupport介面;

    ②建立一個xml檔案來校驗,這個xml檔案要和Action在同一個包下,命名ActionClassName_validation.xml;如果一個Action中有多個方法,如果我們要針對該方法進行校驗的話,將xml檔案命名為ActionClassName-actionName-validation.xml即可。

    ③在xml檔案中配置校驗。


    程式碼展示:

    加入我們對PropelAction中的register()方法進行校驗,xml檔案的命名為:PeopleAction-register-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="username">
		<!-- 校驗使用者名稱不能為空 -->
		<field-validator type="requiredstring">
			<message>使用者名稱不能為空!</message>
		</field-validator>
		<!-- 校驗使用者名稱長度必須在6-10位之間 -->
		<field-validator type="stringlength">
			<param name="maxLength">10</param>
			<param name="minLength">6</param>
			<message>使用者名稱必須在${minLength}-${maxLength}位之間</message>
		</field-validator>
	</field>

	<!-- 校驗age屬性必須在10-80之間 -->
	<field name="age">
		<field-validator type="int">
			<param name="min">10</param>
			<param name="max">80</param>
			<message>年齡必須在${min}-${max}之間</message>
		</field-validator>
	</field>

	<!-- 校驗生日範圍 -->
	<field name="birthday">
		<field-validator type="date">
			<param name="max">2004-12-31</param>
			<param name="min">1934-01-01</param>
			<message>生日必須在 1934年01月01日到2004年12月31日之間</message>
		</field-validator>
	</field>

	<!-- 校驗郵箱 -->
	<field name="email">
		<field-validator type="email">
			<message>郵箱格式化不正確</message>
		</field-validator>
	</field>

	<!-- 主頁校驗 -->
	<field name="myurl">
		<field-validator type="url">
			<message>格式不正確</message>
		</field-validator>
	</field>

	<!-- 對telphone資訊使用正則校驗 -->
	<field name="telphone">
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[^139\d{8}$]]></param>
			<message>格式不正確,必須是139開始</message>
		</field-validator>
	</field>

	<field name="repassword">
		<field-validator type="fieldexpression">
			<param name="expression"><![CDATA[(password==repassword)]]></param>
			<message>兩次密碼輸入不一致</message>
		</field-validator>
	</field>
</validators>	

    總結:在struts學習的這塊,一定要和前面學習的ASP.NET MVC結合起來,這樣對理論的理解和比較快;在一個就是要多多動手實踐,很多時候看視訊中的程式碼邏輯很簡單,但是讓自己敲卻不一定敲的出來。而且敲程式碼的也可以加深自己的知識點的理解,實現程式碼也會提高自己的興趣和自信心,何樂而不為呢?


    

相關文章