首页 > 代码库 > Struts2 手动验证

Struts2 手动验证

* 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法
    
    * 要继承ActionSupport类或者实现Validateable接口
    
    * 重写Validateable接口的validate()方法
        * 前提是:要保证setUsername()、validate()、login()方法要按照这个先后顺序执行
    
    * 如果登录失败,如何处理:
        * this.addFieldError( key, value);
            * key:错误提示字段
            * value:错误提示信息
    
    * 什么时候才是验证通过?
        * 验证通过:1、map集合不存在;2、map集合存在并为空
        * 验证不通过:map集合存在并且不为空
    
    * 分析需求:
        * 用户名不能为null ,""
        * 密码不能为null, "" ,并且密码的长度6-12之间
    
    * 针对所有业务方法进行验证还是针对某个指定业务方法进行验证?
        * 重写的validate()方法,针对所有业务方法进行验证
        * 重写的validate()方法加上要验证的指定的业务方法名(业务方法名的首字母大写),实现针对某个指定的业务方法进行验证
            * 为什么要这样进行拼接?因为struts2框架底层拼接,如果不这样写,底层就找不到对应方法名
   

1 index.jsp2 <s:fielderror></s:fielderror>3 <s:form name="loginForm" namespace="/validate"  action="ValidateAction_login.action" method="post">4     用户名:<s:textfield name="username"/><br/>5     密码:<s:password name="pwd"/><br/>6     <s:submit value=http://www.mamicode.com/"登录"/>7 </s:form>8 <a href=http://www.mamicode.com/"${pageContext.request.contextPath}/validate/ValidateAction_test.action">test</a>
 1 @SuppressWarnings("serial") 2 public class ValidateAction extends ActionSupport { 3     private String username; 4     private String pwd; 5     public String getUsername() { 6         return username; 7     } 8     public void setUsername(String username) { 9         this.username = username;10     }11     public String getPwd() {12         return pwd;13     }14     public void setPwd(String pwd) {15         this.pwd = pwd;16     }17     //只验证Login 业务,不验证test,如果全部验证,把方法名携写作validate()18     public void validateLogin() {19         if(username==null || username.equals(""))20         {21             this.addFieldError("error", "用户名不能为空");//key:错误标示;value:错误提示22         }23         if(pwd==null || pwd.equals(""))24         {25             this.addFieldError("error", "密码不能为空");26         }else {27             String pattern="^[0-9a-zA-Z]{6,12}$";28             Pattern p=Pattern.compile(pattern);29             Matcher m=p.matcher(pwd);30             boolean b=m.matches();31             if(!b){32                 this.addFieldError("error", "密码格式错误");33             }34         }35     }36     37     public String login(){38         System.err.println("1234567890-");39         return "success";40     }41     public String test(){42         System.err.println("987654321");43         return "success";44     }45 }

 

Struts2 手动验证