值栈中存取数据

值栈中存取数据会把请求传递的参数存储在值栈之中,同时把Action对象也会压入栈中,属性对象在上边,Action在下边,对象的值既可以从栈顶取,也可以从Action的person属性中来取

       会把请求传递的参数存储在值栈之中,同时把Action对象也会压入栈中,属性对象在上边,Action在下边,对象的值既可以从栈顶取,也可以从Action的person属性中来取。

public class PersonAction extends ActionSupport implements ModelDriven<Person> {
    private String username;
    // 接收到的数据会自动放入值栈之中
    private Person person = new Person();

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public String contextmaptext() throws Exception {
        System.out.println(username);
        // 获得动作类的上下文
        /**
         * ActionContext包含了contextmap和valuestack
         */
        ActionContext ac = ServletActionContext.getContext();
        // 在contextmap存储数据,默认的相当于request,因为ActionContext的生命周期和request一样都是第一次请求
        ac.put("username", "张三");
        // 把数据存储在会话范围
        ac.getSession().put("user", "周大大");
        // 在应用范围内存数据
        ac.getApplication().put("pv", 23313513);
        return super.execute();
    }

    @Override
    public Person getModel() {
        return person;
    }
}

值栈中存取数据 

从值栈中取数据ognl表达式不需要“#”:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>%
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <s:debug></s:debug>
    <s:property value="person.personId"/>
    <s:property value="person.pName"/>
    <s:property value="person.gender"/>
  </body>
</html>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>%
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <s:property value="#username"/>
    <s:property value="#session.user"/>
    <s:property value="#application.pv"/>
    <s:debug></s:debug>
    <s:property value="username"/>
    <s:property value="person.personId"/>
    <s:property value="person.pName"/>
    <s:property value="person.gender"/>
    <hr>
    <s:property value="personId"/>
    <s:property value="pName"/>
    <s:property value="gender"/>
  </body>
</html>

 手动通过栈放入的数据也会放入栈顶,但是在Action对象中不会存储在相应属性数据

值栈中存取数据

public class PersonAction extends ActionSupport implements ModelDriven<Person> {
    private String username;

    private Person person = new Person();

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    @Override
    public String execute() throws Exception {

        ActionContext ac = ServletActionContext.getContext();
        Person person2 = new Person(2, "xxx", 2);
        // 获得值栈
        ValueStack valueStack = ac.getValueStack();
         // 把person2压栈
        valueStack.push(person2);
        return super.execute();
    }

    @Override
    public Person getModel() {
        return person;
    }
}

取不是栈顶的值

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="/struts-tags" prefix="s" %>%
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <s:property value="#username"/>
    <s:property value="#session.user"/>
    <s:property value="#application.pv"/>
    <s:debug></s:debug>
    <h3>从栈顶取Action对象中的值</h3>
    <s:property value="username"/>
    <s:property value="person.personId"/>
    <s:property value="person.pName"/>
    <s:property value="person.gender"/>
    <hr>
    <h3>从栈顶的model对象中取值</h3>
    <s:property value="personId"/>
    <s:property value="pName"/>
    <s:property value="gender"/><hr>
    <h3>取栈中从栈顶数相同属性第二个的值</h3>
    <s:property value="[1].personId"/>
    <s:property value="[1].pName"/>
    <s:property value="[1].gender"/>
  </body>
</html>

今天的文章值栈中存取数据分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/61694.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注