国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts2總結---數據封裝機制 (10)

2019-11-06 06:52:11
字體:
來源:轉載
供稿:網友

一,屬性驅動的數據封裝

示例代碼:

public class AttributeAction extends ActionSupport {    // 屬性直接放在action類中,并且每一個屬性都得寫get和set方法    PRivate String name;    private String passwd;    // 經過struts2的封裝,可以直接在這里獲取到我們需要的數據    // 我們并沒有自己去設置這些屬性的值,都是struts2幫我們做好了    // 這就是屬性驅動的封裝機制    public String execute() {        System.out.println(name);        System.out.println(passwd);        return SUCCESS;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPasswd() {        return passwd;    }    public void setPasswd(String passwd) {        this.passwd = passwd;    }}要使用上面的action我們可以使用下面的form表單來提交:

<%-- 這里action參數寫的是action的絕對路徑 --%><form action="<%=basePath%>normal/AttributeAction" method="post">    <input type="text" name="name">    <input type="text" name="passwd">    <button type="submit">提交</button></form>

我們發現這種方法在屬性較少的情況下可取,如果屬性很多,代碼會很亂,所以有了下面的模型驅動

二,模型驅動

(1),不使用struts2標簽的模型驅動

// 實現ModelDriven接口,泛型中寫我們封裝的數據public class StudentAction extends ActionSupport implements ModelDriven<User> {    // 我們必須實例化我們封裝的數據,struts2會直接使用我們的這個類,將數據set進去    // 所以我們必須在這個類中寫get和set方法    User u = new User();    // 實現此接口必須實現的方法,返回我們封裝的數據    @Override    public User getModel() {        return u;    }    @Override    // 這種方法我們完全沒有設置什么,但是struts2依然為我們將數據放了進去    // 這里其實是java反射的應用    public String execute() throws Exception {        System.out.println(u.getName());        System.out.println(u.getPasswd());        return "success";    }}

使用這種action的form表單和屬性驅動的一模一樣

(2)使用struts2標簽的模型驅動

示例代碼:

// 注意,這里不用實現ModelDriven接口// 看馬士兵說的這叫域模型public class DomainModelAction extends ActionSupport {    // 注意,這里不用自己實例化,struts2會幫助我們實例化    // 所以,user里面必須有不帶參數的構造方法    // 同時,注意下面,我們必須寫出user的get和set方法    User user;    public String execute() {        try {            System.out.println(user.getName());            System.out.println(user.getPasswd());        } catch (NullPointerException e) {            return ERROR;        }        return SUCCESS;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}為什么說是標簽驅動的呢?看下面的form表單:

<form action="normal/DomainModel_add" method="post">    <%--注意name屬性,必須是我們action中的數據名稱.屬性名--%>    <input type="text" name="user.name">    <input type="text" name="user.passwd">    <button type="submit">提交</button></form>還可以使用struts2的標簽:

<%--這里定位action的方式是和配置struts.xml差不多,使用namespace和action名--%><s:form namespace="/normal" action="DomainModel_add" method="POST">    <%--name屬性也必須這樣寫--%>    <s:textfield name="user.name"/>    <s:passWord name="user.passwd"/>    <s:submit>提交</s:submit></s:form>這就是struts2的3種數據封裝機制,核心的機制是Java反射


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴彦淖尔市| 潜山县| 东丽区| 沧州市| 河南省| 察隅县| 四平市| 山西省| 宜黄县| 兴义市| 苍溪县| 湟中县| 蕲春县| 桦南县| 康定县| 哈密市| 浠水县| 永春县| 长春市| 乐昌市| 岳阳县| 新巴尔虎左旗| 敦煌市| 和平县| 松阳县| 两当县| 荥阳市| 沅江市| 南开区| 桂阳县| 禄丰县| 大庆市| 东源县| 江安县| 霍州市| 石家庄市| 台东县| 光山县| 永嘉县| 凤冈县| 梓潼县|