2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

Strust2的核心配置:模型驅動

更新時間:2023-01-11 來源:黑馬程序員 瀏覽量:

IT培訓班

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

  與屬性驅動中直接使用域對象字段驅動方式的數據傳遞類似,模型驅動方式也是通過JavaBean模型進行數據傳遞的。只要是普通的JavaBean,就可以充當模型部分,并且JavaBean中所封裝的屬性要與表單的屬性一一對應,JavaBean就是數據傳遞的載體。使用模型驅動方式時,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";
    }
}

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

<form name="forml" action="LoginAction" method="post">
    用戶名:<input type="text" name="username"><br/>
    密碼:<input type="password" name="password"><br/>
    <input type="submit" value="登錄">
</form>

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

  與屬性驅動相比,模型驅動不需要在Action類中定義與表單元素一一對應的所有屬性及其各屬性的getter和setter方法,這減少了Action類中的代碼量。在項目應用中具體使用哪種驅動方法,現給出以下幾點建議。

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

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

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

  總之,屬性驅動的方法和模型驅動的方法各有優缺點,在實際開發中,需要根據項目實際情況選擇使用哪種驅動方式。

1673403027004_領取課程.jpg

分享到:
在線咨詢 我要報名
和我們在線交談!