struts2中咱們能夠使用Model-Driven和Property-Driven進行表單數據的封裝,便於咱們在Action中直接使用java
屬性驅動時,只要保持表單域名字和Action屬性名一致,便可自動進行值得填充。apache
第一種數組
http://localhost:8080/Struts/paramter?username=aa&password=bb
訪問的路徑和參數username=aa&password=bb框架
代碼jsp
package org.heinrich.action; import com.opensymphony.xwork2.ActionSupport; public class ParamterAction extends ActionSupport { private static final long serialVersionUID = -8556185601880040463L; private String username; private String password; public String login(){ System.out.println(username); System.out.println(password); return SUCCESS; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
hr-user.xml文件ide
<action name="paramter" class="org.heinrich.action.ParamterAction" method="login"> <result>/success.jsp</result> </action>
在Action中直接能夠拿到this
username :heinrich password :123456
在頁面上我要拿到username和passowrd的話spa
username : ${username } password : ${password }
框架會爲你把username和password傳到下一個頁面code
username : heinrich password : 123456
還有一個屬性驅動的方式xml
http://localhost:8080/Struts/paramter?user.username=heinrich&user.password=123456
參數傳遞方式user.username=heinrich&user.password=123456
package org.heinrich.action; import org.heinrich.User; import com.opensymphony.xwork2.ActionSupport; public class ParamterAction extends ActionSupport { private static final long serialVersionUID = -8556185601880040463L; private User user; public String login(){ System.out.println(user.getUsername()); System.out.println(user.getPassword()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
獲取前臺傳過來的參數,還會把他放到下個頁面使用
頁面取值 username : ${user.username } password : ${user.password }
還有一種基於模型驅動的方式,官方不推薦使用,我比較喜歡用官方的
package org.heinrich.action; import org.heinrich.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class ParamterAction extends ActionSupport implements ModelDriven<User>{ private static final long serialVersionUID = -8556185601880040463L; private User user = new User(); public String login(){ System.out.println(user.getUsername()); System.out.println(user.getPassword()); return SUCCESS; } @Override public User getModel() { return user; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
在我看來這種方式不錯,用來作Abstract類的Action的時候很好用
其實還有
方法3:能夠經過ActionContext對象Map parameterMap=context.getParameters();方法,獲得請求參數Map,而後經過parameterMap來獲取請求參數。須要注意的是:當經過parameterMap的鍵取得參數值時,取得是一個數組對象,即同名參數的值的集合。
package org.heinrich.action; import java.util.Map; import org.heinrich.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class ParamterAction extends ActionSupport{ private static final long serialVersionUID = -8556185601880040463L; public String login(){ Map<String, Object> contextMap = ActionContext.getContext().getParameters(); for(String key:contextMap.keySet()){ Object object = contextMap.get(key); System.out.println(key+" :"+object.toString()); } return SUCCESS; } }
方法4:經過ActionContext取得HttpServletRequest對象,而後使用request.getParameter("參數名")獲得參數值。
package org.heinrich.action; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.heinrich.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class ParamterAction extends ActionSupport{ private static final long serialVersionUID = -8556185601880040463L; public String login(){ HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); String username = request.getParameter("user.username"); String password = request.getParameter("user.password"); System.out.println(username); System.out.println(password); request.setAttribute("username", username); request.setAttribute("password", password); return SUCCESS; } }