教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java培訓:模型驅(qū)動方式處理請求參數(shù)

更新時間:2023年12月28日10時22分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  在Struts2中,Action還有另外一種方式處理請求參數(shù),稱為模型驅(qū)動(ModelDriven)。模型驅(qū)動方式要求Action需要通過實現(xiàn)ModelDriven接口接收請求參數(shù),并且要重寫getModel()方法。getModel()方法返回的就是Action所使用的數(shù)據(jù)模型對象。

  與屬性驅(qū)動中直接使用域?qū)ο笞侄悟?qū)動方式的數(shù)據(jù)傳遞類似,模型驅(qū)動方式也是通過JavaBean模型進行數(shù)據(jù)傳遞的。只要是普通的JavaBean,就可以充當模型部分,并且JavaBean中所封裝的屬性要與表單的屬性一一對應,JavaBean就是數(shù)據(jù)傳遞的載體。使用模型驅(qū)動方式時,Action類中通過getModel()方法獲取模型,其示例代碼如下所示:

public class loginAction extends ActionSupport implements ModelDriven<User>{
   private User user=new User();
   public User getModel() {
      return user;
   }
   public String execute() throws Exception {
      return "success";
   }
}

  使用模型驅(qū)動時,其對應的表單頁面也要做相應的調(diào)整,調(diào)整后的代碼片段如下所示:

<form name="forml" action="loginAction"method="post">
    用戶名:<input type="text" name="username"><br/>
    密碼:<input type="password" name="password"><br/>
</form>

  從上述代碼中可以看出,使用ModelDriver的方式后,表單中的文本域名已經(jīng)不需要添加user前綴,頁面上的username會自動對應到這個Model的username屬性。

  與屬性驅(qū)動相比,模型驅(qū)動不需要在Action類中的代碼量。在項目應用中具體使用哪種驅(qū)動方法,現(xiàn)給出以下幾點建議。

  (1)要統(tǒng)一整個系統(tǒng)中Action的驅(qū)動方法,即要么都使用屬性驅(qū)動,要么都使用模型驅(qū)動。

  (2)如果持久層對象與表單中的屬性是一一對應的關系,那么建議使用模型驅(qū)動,因為模型驅(qū)動方法使Action類中的代碼更加整潔。

  (3)如果持久層對象與表單中的屬性不是一一對應的關系,那么建議使用屬性驅(qū)動,因為不是一一對應的關系時,系統(tǒng)中需要提供兩個JavaBean(一個對應表單提交的數(shù)據(jù),一個用于持久層對象)。

  總之,屬性驅(qū)動的方法和模型驅(qū)動的方法各有優(yōu)缺點,在實際開發(fā)中,需要根據(jù)項目實際情況選擇使用哪種驅(qū)動方式。

0 分享到:
和我們在線交談!