Struts2 手動驗證

* 首先要從頁面中獲取對應的標籤name屬性的值,在動做類action中聲明同名的屬性,提供get和set方法
    
    * 要繼承ActionSupport類或者實現Validateable接口
    
    * 重寫Validateable接口的validate()方法
        * 前提是:要保證setUsername()、validate()、login()方法要按照這個前後順序執行
    
    * 若是登陸失敗,如何處理:
        * this.addFieldError( key, value);
            * key:錯誤提示字段
            * value:錯誤提示信息
    
    * 何時纔是驗證經過?
        * 驗證經過:一、map集合不存在;二、map集合存在併爲空
        * 驗證不經過:map集合存在而且不爲空
    
    * 分析需求:
        * 用戶名不能爲null ,""
        * 密碼不能爲null, "" ,而且密碼的長度6-12之間
    
    * 針對全部業務方法進行驗證仍是針對某個指定業務方法進行驗證?
        * 重寫的validate()方法,針對全部業務方法進行驗證
        * 重寫的validate()方法加上要驗證的指定的業務方法名(業務方法名的首字母大寫),實現針對某個指定的業務方法進行驗證
            * 爲何要這樣進行拼接?由於struts2框架底層拼接,若是不這樣寫,底層就找不到對應方法名
    框架

1 index.jsp
2 <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="登陸"/>
7 </s:form>
8 <a href="${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 }
相關文章
相關標籤/搜索