struts2驗證

最近使用了一下struts2的驗證框架,感受不錯。但其中也發現了一些技巧和問題,先總結以下。

一、創建一個實體類,主要是對由於登錄而設置的這個驗證框架,因此首先建立一個用戶實體類css

 

Java代碼   收藏代碼
  1. import java.util.Date;  
  2.   
  3. import javax.persistence.Column;  
  4. import javax.persistence.Entity;  
  5. import javax.persistence.Table;  
  6.   
  7. /* 
  8.  *  
  9.  * 用戶 
  10.  *  
  11.  */  
  12.   
  13. @Entity  
  14. @Table (name = "user_tbl")  
  15. public class UserEntity extends BaseEntity {  
  16.     /** 
  17.      *  
  18.      */  
  19.     private static final long serialVersionUID = 1L;  
  20.     /** 
  21.      * 用戶名 
  22.      */  
  23.     private String name;  
  24.       
  25.     /** 
  26.      * 用戶密碼 
  27.      */  
  28.     private String password;  
  29.   
  30.     @Column (name = "name", length = 255, nullable = false)  
  31.     public String getName() {  
  32.         return name;  
  33.     }  
  34.   
  35.     public void setName(String name) {  
  36.         this.name = name;  
  37.     }  
  38.     @Column (name = "password", length = 255, nullable = false)  
  39.     public String getPassword() {  
  40.         return password;  
  41.     }  
  42.   
  43.     public void setPassword(String password) {  
  44.         this.password = password;  
  45.     }  
  46.   
  47. }  

 

 二、建立登錄的Action類java

Java代碼   收藏代碼
  1. import com.opensymphony.xwork2.ActionSupport;  
  2. import com.zaotao.entity.UserEntity;  
  3. import com.zaotao.service.manage.IAdminService;  
  4.   
  5. /** 
  6.  * 管理員的普通action 
  7.  * @author 管理員 
  8.  * 
  9.  */  
  10. public class AdminAction extends ActionSupport {  
  11.   
  12.     /** 
  13.      *  
  14.      */  
  15.     private static final long serialVersionUID = 1L;  
  16.       
  17.     /** 
  18.      * 用戶實體 
  19.      */  
  20.     private UserEntity user;  
  21.       
  22.     /** 
  23.      * 驗證碼 
  24.      */  
  25.     private String code;  
  26.           
  27.     public String getCode() {  
  28.         return code;  
  29.     }  
  30.   
  31.     public void setCode(String code) {  
  32.         this.code = code;  
  33.     }  
  34.       
  35.     public UserEntity getUser() {  
  36.         return user;  
  37.     }  
  38.   
  39.     public void setUser(UserEntity user) {  
  40.         this.user = user;  
  41.     }  
  42.       
  43.     /** 
  44.      * 登陸 
  45.      * @return 登陸成功 
  46.      */  
  47.     public String loginAdmin()  
  48.     {  
  49.             return "success";  
  50.     }  
  51.   
  52.   
  53.       
  54. }  

 三、因爲struts2的查找機制(這個能夠參考相關資料),咱們在這兩個類所在的包中分別新建UserEntity-validation.xml和AdminAction-validation.xmlexpress

    (1)UserEntity-validation.xmlsession

Java代碼   收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   <!DOCTYPE validators PUBLIC   
  3.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  4.         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
  5.   
  6. <validators>  
  7.     <field name="name">  
  8.         <field-validator type="requiredstring">  
  9.             <message>帳號不能爲空</message>  
  10.         </field-validator>  
  11.     </field>  
  12.       
  13.     <field name="password">  
  14.         <field-validator type="requiredstring">  
  15.             <message>密碼不能爲空</message>  
  16.         </field-validator>  
  17.     </field>  
  18. </validators>  

 (2)AdminAction-validation.xml框架

Java代碼   收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   <!DOCTYPE validators PUBLIC   
  3.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  4.         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
  5. <validators>  
  6.     <field name="user">  
  7.         <field-validator type="visitor">  
  8.             <message>用戶:</message>  
  9.         </field-validator>  
  10.     </field>  
  11.   
  12.     <field name="code">  
  13.         <field-validator type="fieldexpression">  
  14.             <param name="expression">  
  15.                 #session.CODE.equalsIgnoreCase(code)  
  16.             </param>  
  17.             <message>${#session.CODE}:${code}</message>  
  18.         </field-validator>  
  19.     </field>  
  20. </validators>  

 

四、創建登錄的jsp頁面jsp

Java代碼   收藏代碼
  1. <s:form id="loginForm" action="login_AdminAction">  
  2.         <div class="admin_main_top"></div>  
  3.         <div id="admin_main">  
  4.             <div class="admin_main_head"></div>  
  5.             <div id="admin_main_content">  
  6.                 <ul class="admin_main_ul">  
  7.                     <li>  
  8.                         <label>用戶名:</label>  
  9.                         <s:textfield name ="user.name" id="name"/>  
  10.                         <span id="usererror" class="errorMeg"></span>  
  11.                     </li>  
  12.                   
  13.                     <li>  
  14.                         <label>密碼:</label>  
  15.                         <s:password id="pwd" name="user.password" onfocus="clearError('pwderror')" />  
  16.                         <span id="pwderror" class="errorMeg"></span>  
  17.                     </li>  
  18.               
  19.                     <li>  
  20.                         <label>驗證碼:</label>  
  21.                         <img src="<%=contextPath %>/authImg.servlet"  id="authImg" onclick="refresh()" />  
  22.                         <s:textfield  name="code" id="code"  onFocus="clearError('codeerror');" />  
  23.                         <span id="codeerror" class="errorMeg"></span>   
  24.                     </li>  
  25.                       
  26.                     <li>  
  27.                         <s:submit id="login_button" value="登陸" />  
  28.                     </li>  
  29.                 </ul>  
  30.             </div>  
  31.                     </div>  
  32.         <div><s:fielderror cssStyle="color: red"></s:fielderror></div>  
  33.     </s:form>  

 Action的配置就不寫了,說一下注意點。ui

(1)this

<field-validator type="visitor">
<message>用戶:</message>
</field-validator>
spa

這段代碼中message標籤內不能爲空,不然將會報錯,visitor類型的做用在於,當驗證字段user時,將得到user的類型,並根據類型UserEntity查找UserEntity-validation.xml,執行驗證。.net

(2)

當你使用了圖形驗證碼,你想在驗證框架中將其進行驗證時。須要先將圖形驗證碼的字符串放入session中,而後在驗證框架中驗證。
<message>${#session.CODE}:${code}</message>
寫這句的緣由是我在執行圖形驗證的時候,總是驗證不正確,因此我使用這句話,將存放在session中的code和我輸入的code在錯誤信息內輸出,已查看是否出現問題

(3)

若是你的表單使用的是simple方式,那麼s:form是不會顯示錯誤信息的,那麼

咱們在jsp頁面寫 入 <s:fielderror cssStyle="color: red"></s:fielderror>,用來輸出錯誤信息,固然你也能夠針對每一個字段輸出錯誤信息。若是錯誤信息重複顯示,說明你 的action採用的單例模式,請將其修改成scope="prototype"

(4)

使用struts驗證框架,須要配置input結果跳轉。

(5)

若校驗同時提供XML和validate()兩種方法,則都會被執行,並且是XML校驗先執行,validate()方法後執行。而錯誤信息都會顯示。"short-circuit"屬性僅針對xml有效

相關文章
相關標籤/搜索