爲了處理各類邏輯業務,根據execute方法來判斷請求哪一種業務,而後將請求轉發到對應的業務處理上,java
經過動態請求action對象中的方法,實現某個單一的業務邏輯處理。jsp
動態action的應用ide
//建立action對象,添加add和update方法 import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L; private String info; public String add() throws Exception{ info = "添加信息"; return "add"; } public String update() throws Exception{ info = "更新信息"; return "update"; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } //Struts.xml配置: <!--聲明包 --> <package name="myPackage" extends="struts-default"> <action name="userAction" class="com.lyq.action.UserAction"> <result name="add">user_add.jsp</result> <result name="update">user_update.jsp</result> </action> </package> //user_add.jsp頁面 <s:property value="info"/> //user_update.jsp頁面 <s:property value="info"/> //經過兩個超連接請求 <a href="userAction!add"> 添加</a> <a href="userAction!update">更新</a>
域模型DomainMModelpost
能夠將一些屬性封裝成爲一個實體對象,須要保存信息,直接就能夠吧一個實體對象傳過去this
//user類 public class User { private String loginName; private String password; public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } //action中應用的User對象 import com.opensymphony.xwork2.ActionSupport; public class DomainModel extends ActionSupport { private User user; @Override public String execute() throws Exception { System.out.println(this.user.getLoginName() + "|" + this.user.getPassword()); if ("admin".equals(user.getLoginName())) { return SUCCESS; } else { return "error"; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } <%--javaBean接收/域模型DomainModel--%> <form action="javaBean" method="post"> 輸入姓名<input type="text" name="user.loginName" id=""> <input type="password" name="user.password"> <input type="submit" value="提交"> </form>
!--用域模型配置信息-->
<package name="myPackage" extends="struts-default">
<action name="javaBean" class="com.lyq.action.DomainModel">
<result >user_add.jsp</result>
<result name="error">user_update.jsp</result>
</action>
</package>
驅動模型ModelDrivenspa
在域模型中須要對指定參數名稱爲user.name方式,仍是不方便,Struts2提供了不須要這樣指定就直接對實體對象參數值,這就是ModelDrien3d
能夠看出屬性能夠不指對象code
映射的jsporm
add頁面xml
update頁面