为了处理各种逻辑业务,根据execute方法来判断请求哪种业务,然后将请求转发到对应的业务处理上,

通过动态请求action对象中的方法,实现某个单一的业务逻辑处理。

动态action的应用

//创建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>

 

域模型DomainMModel

可以将一些属性封装成为一个实体对象,需要保存信息,直接就可以吧一个实体对象传过去

//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>

 

驱动模型ModelDriven

在域模型中需要对指定参数名称为user.name方式,还是不方便,Struts2提供了不需要这样指定就直接对实体对象参数值,这就是ModelDrien

 

可以看出属性可以不指对象

 

 映射的jsp

add页面

update页面

 

posted on 2019-03-20 11:24  小胡桐  阅读(338)  评论(0编辑  收藏  举报