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的攔截器