struts2模型驅動


和模型驅動的相對應的是屬性驅動,雖然名字叫的挺牛的,其實很好理解。屬性驅動就是在Action中,定義的是和表單中對應的一個個屬性,然后有屬性的get/set方法。而模型驅動就是事先定義了一個模型,即Model,將表單傳遞過來的數據封裝成一個對象后,再傳遞給Action,這和Struts1的這種機制很相似。那么這兩種方法,哪個好一些呢?還有待實踐的檢驗。。。。。

這里還是用登錄的例子分析一下模型驅動,屬性驅動就不分析了:

1、先建立一個Model,即User類:

 1 package com.suo.beans; 
 2   
 3 import java.util.Date; 
 4   
 5 public class User 
 6 {  
 7     private String username; 
 8     private String password; 
 9     private EMail email;//此處EMail為自定義數據類型,要進行類型轉換  
10  private Date birthday; 
11       
12     public String getUsername() { 
13         return username; 
14     }  
15     public void setUsername(String username) { 
16         this.username = username; 
17     }  
18     public String getPassword() { 
19         return password; 
20     }  
21     public void setPassword(String password) { 
22         this.password = password; 
23     }  
24     public EMail getEmail() { 
25         return email; 
26     }  
27     public void setEmail(EMail email) { 
28         this.email = email; 
29     }  
30     public Date getBirthday() { 
31         return birthday; 
32     }  
33     public void setBirthday(Date birthday) { 
34         this.birthday = birthday; 
35     }  
36 }

2、建立LoginAction類,繼承自ActionSupport,實現ModelDriven接口,這個接口定義了一個getModel()方法,用於返回定義的Model,然后調用set方法,進行賦值。 

package com.suo.actions; 
  
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 
import com.suo.beans.User; 
import com.suo.services.LoginService; 
import com.suo.services.LoginServiceImpl; 
  
public class LoginAction3 extends ActionSupport implements ModelDriven<User> { 
      
    private User user=new User();//這里記住要實例化  
 private LoginService loginService=new LoginServiceImpl();//這里是調用登錄的業務處理邏輯  
 
    @Override  
    public User getModel() { 
        // TODO Auto-generated method stub  
 return user; 
    }  
      
    public String execute() 
    {  
        System.out.println(user.getUsername());  
        System.out.println(user.getPassword());  
          
        if(loginService.isLogin(user.getUsername(), user.getPassword())) 
        {  
            return SUCCESS; 
        }  
        return INPUT; 
    }  
}

在Struts2中,Action起的作用就像servlet的作用,即Controller的作用。具體的業務邏輯要調用其他的Bean來實現。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM