幾乎每乙個
web開發者都會遇到輸入校驗的問題,輸入校驗直接影響了系統的抗破壞效能和穩定性。輸入校驗往往同型別轉換聯絡在一起,在判斷使用者輸入資料的合法性之前,需要先進行型別轉換判斷,然後再進行輸入校驗處理。兩者都是對使用者輸入資料的規範化檢查和處理。
struts2
框架為開發者的輸入校驗提供了良好的支援。 一、
使用validate
方法進行輸入校驗
1、validate()
方法輸入校驗
在actionsupport
類定義中,提供了乙個資料校驗
void validate()
方法,開發者只要在自己的
action
實現類中重寫該方法即可。下面為示例**:
public void validate()
if(password==null||getpassword().trim().equals("")) }
2、validate***()
方法輸入校驗
在struts2
框架的核心內容介紹中已經提到,
action
實現類中可以包含多個處理邏輯,即可以實現動態方法呼叫,每乙個處理邏輯對應乙個處理方法。
struts2
框架為開發者提供了乙個
validate***()
方法來對不同的業務處理方法進行資料輸入校驗。例如增加乙個
login()
方法來對應使用者登入,那麼可以使用
validatelogin()
方法來處理資料輸入校驗。
public string login() throws exception
public void validatelogin()
if(password==null||getpassword().trim().equals("")) }
注意:採用這種輸入校驗時,
validate()
方法會對該
action
實現類中所有的處理方法進行資料輸入校驗,所以在使用
validate***()
方法時,最好去掉
validate()
方法的**,或者檢查兩者不要重複校驗。
3、輸入校驗流程
1.struts2
框架的型別轉換是先於輸入校驗執行的,
struts2
框架使用型別轉換器對使用者輸入的字元進行轉換,轉換為
action
中對應的屬性型別。在此轉換過程中,如果出現異常,則轉換異常***執行攔截操作,並將轉換異常資訊儲存到
actioncontext中。
2.如果使用者請求呼叫了
action
的***()
方法,則執行
validate***()
方法進行資料校驗,如果發現校驗異常,則將異常資訊儲存到
actioncontext
中。然後呼叫
validate()
方法進行輸入校驗。 3.
在執行action
處理方法之前,查詢
actioncontext
中是否有
fielderror
資訊,如果發現有
fielderror
資訊,則直接返回乙個
input
邏輯檢視,跳過
action
處理方法的執行;如果沒有發現
fielderror
資訊,則執行
action
的相應處理方法。 二、
基於框架的輸入校驗
struts2
框架提供了一種基於框架檔案的輸入校驗方式,將校驗規則儲存在特定的框架檔案中,這樣一來就使輸入校驗同
action
實現了分離,提高了系統的維護性。
基於框架的輸入校驗不需要在
action
的實現類中重寫
validate()
方法,action
只需要關係處理使用者請求即可。這樣一來
action
只是乙個簡單的業務控制器,不處理任何使用者資料的輸入校驗工作。在
execute()
方法中只簡單返回乙個
success
字串。
為了使用
struts2
的框架校驗規則檔案進行輸入校驗,需要建立乙個特定的校驗規則檔案就可以。
struts2
框架的校驗規則檔案就是乙個
xml格式配置檔案。該檔案的命名規則為「
action
名稱-validation.xml
」,儲存在同
action
實現類相同的目錄下。本示例的校驗規則檔案為
loginaction-validation.xml
,內容如下(有兩種格式):
(字段校驗格式)
<?xml version="1.0" encoding="gb2312"?>
"">
410框架校驗:使用者名稱長度為$到
$之間
框架校驗:使用者名稱不能為空
框架校驗:密碼不能為空
420框架校驗:密碼長度為$到
$之間
(非欄位校驗格式)
<?xml version="1.0" encoding="gb2312"?>
"">
username410
框架校驗:使用者名稱長度為$到
$之間
username
框架校驗:使用者名稱不能為空
password1410
框架校驗:密碼長度為$到
$之間
password1
框架校驗:密碼不能為空
三、輸入校驗的國際化資訊
基於框架檔案的輸入校驗配置中,用於顯示校驗異常資訊的元素
都是使用硬編碼的形式寫入配置檔案中的,
struts2
框架允許在該元素中使用
key屬性來獲得國際化資訊資源。例如:
globalmessages_zh_cn.properties
檔案中加入如下資源:
login.usernamelength=
使用者名稱字元數在4到
10之間
login.username=
使用者名稱不能為空
修改檢驗檔案配置:
username410
username 四、
復合型別屬性的輸入校驗
struts2
開發中經常使用的是將使用者輸入的字串轉換為乙個復合型別,那麼
action
中含有復合型別屬性時就需要使用
struts2
框架提供的復合型別校驗器。
struts2
框架提供了乙個復合型別校驗器——
visitor
校驗器,該校驗器用於校驗
action
定義的復合型別。
示例:例如,乙個使用者
action
中包含了乙個
user
型別的復合型別屬性,其業務控制器為
loginaction
,由於action
中定義了乙個復合型別,所以需要建立兩個校驗規則檔案,第乙個為
action
的校驗規則檔案
loginaction-validation.xml
,**如下:
<?xml version="1.0" encoding="gb2312"?>
"">
復合型別校驗
-->
引數context
指明了該復合型別屬性的上下文校驗名稱
-->
usercontext
指明是否在校驗資訊中加入復合型別資訊
-->
使用者資訊:
第二個校驗規則檔案為
user-usercontext-validation.xml
,user
指明了該復合型別對應的類名,
usercontext
即為引數
context
的值。該校驗規則檔案**如下:
<?xml version="1.0" encoding="gb2312"?>
"">
使用者名稱不能為空!
…… ……
struts2輸入校驗
struts2輸入校驗主要分為兩種 1 實現校驗 action需要繼承actionsupport,並在action重寫validate 方法,在validate方法中,根據頁面的相應元素名稱進行相關校驗,如果校驗不通過,呼叫this.fielderror 頁面元素name,出錯提示資訊 然後返回in...
Struts2輸入校驗
在struts2中可以對action中的所有方法實現校驗,也可以針對指定方法進行校驗。struts2中實現上述的校驗又可以分為手動編寫 實現和配置xml檔案方法 手動編寫 校驗 a.對所有和 execute方法簽名相同的方法進行校驗 通過重寫validate 方法實現 validate 方法會校驗a...
Struts2輸入校驗
對於輸入校驗struts2提供了2種實現方法 1.採用手工編寫 實現 1 action要繼承actionsupport類,並且重寫validate方法,將錯誤資訊新增到addfielderror方法中 2 在頁面中利用struts2標籤將其 顯示出來,這樣可以對所有的action中所有的方法進行校驗...