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有效

相关文章
相关标签/搜索