Struts2 的學習筆記(三) Struts2 數據傳輸

 數據處理jsp

1.       在servlet中,若是要獲取頁面提交的數據須要使用request.getParameter方法來獲取,而且每次須要進行相關的類型轉換工做。數據的獲取及轉換工做比較簡單,而且是重複的操做。在struts2中提供了一種比較優秀的方式來接收和轉換數據。post

2.       在struts2中,若是要獲取表單中的數據能夠有多種方式:this

a)         屬性驅動方式spa

b)        對象驅動方式orm

c)         模型驅動方式。對象

3.       屬性驅動:頁面表單中表單域的名稱和action的屬性名一致,而且在action中提供屬性的get/set方法,那麼struts2會自動將數據設置到action的屬性上,在處理方法中能夠直接獲取表單值(屬性值)。爲action的屬性設置了get方法,那麼在頁面中就能夠經過el表達式獲取屬性值。接口

Jsp頁面ci

<form action="login.action" method="post">開發

    username:<input type="text" name="username"/><br>get

    password:<input type="password" name="password"/><br>

    <input type="submit" value="login"/>

    </form>

Action處理類

public class UserAction {

   private String username;

   private String password;

   //登陸處理方法

   public String login(){

      System.out.println("用戶名:"+username+"\t密碼:"+password);

      if("siggy".equals(username)&&"1111".equals(password)){

         //登陸成功

         /**

          * Action.SUCCESS="success"; 表示action執行成功,而且須要展現頁面

          * Action.NONE="none";表示action執行成功,不須要視圖展現頁面

          * Action.ERROR="error";表示action執行失敗,須要一個失敗頁面進行展現

          * Action.INPUT="input";表示若是action要執行成功,須要更多的輸入信息。

          * Action.LOGIN="login";表示須要用戶登陸方可訪問

          */

        

         //return "success";

         return Action.SUCCESS;

      }

      return "login";

   }

  

   public String getUsername() {

      return username;

   }

   public void setUsername(String username) {

      this.username = username;

   }

   public String getPassword() {

      return password;

   }

   public void setPassword(String password) {

      this.password = password;

   }

}

4.       對象驅動:在action類中,將對象設置爲屬性,而且提供get/set方法。在頁面中表單域名稱是action類中對象的屬性名.屬性。在對象的類中提供對應屬性的get/set方法便可。這樣在action的處理類獲取的將會是對象。對象驅動的好處在於不用在處理類中 再封裝對象。缺點是在jsp中表單域名稱有重複的地方。

Vo類

public class User {

   private String name;

   private String pwd;

   public String getName() {

      return name;

   }

   public void setName(String name) {

      this.name = name;

   }

   public String getPwd() {

      return pwd;

   }

   public void setPwd(String pwd) {

      this.pwd = pwd;

   }

}

Action處理類

public class UserObjectAction {

   private User user;

   public String login(){

      System.out.println("用戶名:"+user.getName()+"\t密碼:"+user.getPwd());

      if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){

         return Action.SUCCESS;

      }

      return "login";

   }

   public User getUser() {

      return user;

   }

   public void setUser(User user) {

      this.user = user;

   }

}

Jsp頁面

<form action="loginObject.action" method="post">

    username:<input type="text" name="user.name"/><br>

    password:<input type="password" name="user.pwd"/><br>

    <input type="submit" value="login"/>

    </form>

5.       模型驅動:因爲對象驅動在頁面中有重複的代碼,當類的屬性比較多時,開發效率比較低。Struts2中提供了一種模型驅動,使得在頁面的表單域名稱和類的屬性名一致,action處理類須要實現ModelDriven接口便可。

Jsp頁面

<form action="loginModel.action" method="post">

    username:<input type="text" name="name"/><br>

    password:<input type="password" name="pwd"/><br>

    <input type="submit" value="login"/>

    </form>

Vo類

public class User {

   private String name;

   private String pwd;

   public String getName() {

      return name;

   }

   public void setName(String name) {

      this.name = name;

   }

   public String getPwd() {

      return pwd;

   }

   public void setPwd(String pwd) {

      this.pwd = pwd;

   }

}

Action處理類

public class UserModelAction implements ModelDriven<User>{

   private User user;

   public String login(){

      System.out.println("用戶名:"+user.getName()+"\t密碼:"+user.getPwd());

      if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){

         return Action.SUCCESS;

      }

      return "login";

   }

   public User getModel() {

      return user = new User();

   }

   public User getUser() {

      return user;

   }

 

   public void setUser(User user) {

      this.user = user;

   }

}

相關文章
相關標籤/搜索