Struts2框架的數據封裝一之屬性封裝(屬性封裝的第二種方式:封裝成javaBean)
阿新 • • 發佈:2018-12-12
ava width ace exceptio override efault cut domain demo
Struts2中提供了兩類數據封裝的方式?
第一種方式:屬性驅動(有兩種方式:一個對屬性,另外一個是將參數封裝到javaBean中)
B. 在頁面上,使用OGNL表達式進行數據封裝。(將參數封裝到javaBean中)
* 在頁面中使用OGNL表達式進行數據的封裝,就可以直接把屬性封裝到某一個JavaBean的對象中。 * 在頁面中定義一個JavaBean,並且提供set方法:例如:private User user; * 頁面中的編寫發生了變化,需要使用OGNL的方式,表單中的寫法:<input type="text" name="user.username"> * 註意:只提供一個set方法還不夠,必須還需要提供user屬性的get和set方法!!! > 先調用get方法,判斷一下是否有user對象的實例對象,如果沒有,調用set方法把攔截器創建的對象註入進來,
例:
1.書寫javaBean類User:
package com.huida.domain;
public class User {
private String username;
private String password;
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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
2.寫對應的action類,Regist2Action:
package com.huida.action1;
import com.huida.domain.User;
import com.opensymphony.xwork2.ActionSupport;
public class Regist2Action extends ActionSupport{
//屬性驅動不需要手動實例化
private User user;
//提供set和get方法
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return NONE;
}
}
3.對action進行配置:
<package name="demo" namespace="/" extends="struts-default"> <action name="regist2Action" class="com.huida.action1.Regist2Action"></action> </package>
4.在index.jsp中寫對應的表單,這裏註意表單的中name對應值的變化,應該寫為user.username:
<h3>屬性驅動封裝數據,封裝到javaVean中</h3>
<form action="${ pageContext.request.contextPath }/regist2Action.action" method="post">
姓名<input type="text" name="user.username"/><br/>
密碼<input type="text" name="user.password"/><br/>
<input type="submit" value="註冊">
</form>
啟動服務器,執行index.jsp頁面,然後輸入姓名和密碼,點擊註冊,在控制臺上輸出如下內容表示封裝數據成功:
Struts2框架的數據封裝一之屬性封裝(屬性封裝的第二種方式:封裝成javaBean)