Struts2 傳遞引數的方法
阿新 • • 發佈:2019-01-31
首先要寫一個BaseAction,繼承actionSupport,實現
ServletContextAware,ServletRequestAware, ServletResponseAware,三個介面。
第1種: 首先Action繼承一個BaseAction,類中定義一個屬性與頁面需要傳輸的引數名稱一樣,使用該屬性的set方法就可以獲 取需要傳遞的引數.同樣的使用屬性的get方法可以向頁面傳輸引數,在jsp頁面上可以使用el表示式 ${引數名稱}可以取到該引數的值 (該屬性名需要與action中需要傳遞的引數名稱一致)
@Controller public class UserAction
extends
BaseAction {
private
static
final
long
serialVersionUID
= 6590628669106856656L;
private
String
username
;
public
String getUser() {
return
username;
}
public
void
setUser(String
username)
{
this.
username
=
username;
System.
out.println(
"set方法");
}
private
String
result
=
SUCCESS;
/**
*struct.xml中action預設呼叫的方法
*/
public
String execute()
throws
Exception {
return
result;
}
}
在這個action中,有一個屬性是username,並有set/get方法,只要傳過來的引數名稱叫username,會自動給這個類中username賦值,從而取到頁面上的值;
如果是表單提交傳遞多個引數的時候,寫多個屬性及其get/set方法有點繁瑣,比如使用者註冊頁面,我們可以將需要傳遞的引數封裝成物件,比如使用者註冊的時候需要填寫使用者名稱,密碼,手機,生日等資訊,只需要建立一個user型別封裝這些表單屬性.在Action中定義user型別的變數,並實現其get/set方法.
@Controller
public
class
UserAction
extends
BaseAction {
private
static
final
long
serialVersionUID
= 6590628669106856656L;
private
User
user
;
public
User getUser() {
return
user;
}
public
void
setUser(User
user) {
this.
user
=
user;
System.
out.println(
"set方法");
}
private
String
result
=
SUCCESS;
/**
*struct.xml中action預設呼叫的方法
*/
public
String execute()
throws
Exception {
return
result;
}
}
在頁面上只需要將需要獲取的引數的標籤的名稱設定為 物件名.屬性名(類似於el表示式) 如<input name="user.username">
這是action便可以取到user的username屬性的值.
第二種;action繼承BaseAction類,定義一個HttpServletRequest屬性,並重寫 setServletRequest方法,這時候我們可以像servlet中那樣使用request從頁面獲取引數或者傳遞引數 @Controller public class UserAction extends BaseAction { private static final long serialVersionUID = 6590628669106856656L; private User user ; public User getUser() { return user; } public void setUser(User user) { this. user = user; System. out.println( "set方法"); | private HttpServletRequest request ; //重寫setServletRequest方法 @Override public void setServletRequest( HttpServletRequest request) { this. request = request; }
private String result = SUCCESS; /** *struct.xml中action預設呼叫的方法 */ public String execute() throws Exception { List<User> users = userDAO.findAll(); request.setAttribute( "users", users); return result; } }
@Controller public class UserAction
在這個action中,有一個屬性是username,並有set/get方法,只要傳過來的引數名稱叫username,會自動給這個類中username賦值,從而取到頁面上的值;
如果是表單提交傳遞多個引數的時候,寫多個屬性及其get/set方法有點繁瑣,比如使用者註冊頁面,我們可以將需要傳遞的引數封裝成物件,比如使用者註冊的時候需要填寫使用者名稱,密碼,手機,生日等資訊,只需要建立一個user型別封裝這些表單屬性.在Action中定義user型別的變數,並實現其get/set方法.
這是action便可以取到user的username屬性的值.
第二種;action繼承BaseAction類,定義一個HttpServletRequest屬性,並重寫 setServletRequest方法,這時候我們可以像servlet中那樣使用request從頁面獲取引數或者傳遞引數 @Controller public class UserAction extends BaseAction { private static final long serialVersionUID = 6590628669106856656L; private User user ; public User getUser() { return user; } public void setUser(User user) { this. user = user; System. out.println( "set方法"); | private HttpServletRequest request ; //重寫setServletRequest方法 @Override public void setServletRequest( HttpServletRequest request) { this. request = request; }
private String result = SUCCESS; /** *struct.xml中action預設呼叫的方法 */ public String execute() throws Exception { List<User> users = userDAO.findAll(); request.setAttribute( "users", users); return result; } }