值栈存储结构、实例笔记整理

值栈的存储结构:

临时对象。该对象是在程序执行过程中,由容器自动创建并存储到值栈中。该对象的值并不固定,会随着应用不同而发生变化,当应用结束的时候,对象会被清空。(struts2标签输出迭代的值的时候,这些值都将以临时对象的形式放到值栈中)

模型对象。在action使用模型驱动方式传值的时候被用到。当jsp页面需要用到这些对象所携带的数据时,也会到值栈中去找对应的模型对象,获取数值。

Action对象:当每个action请求到来时候,容器会先创建一个此action的对象并存入值栈中,该对象携带所有与action执行过程有关的信息。

命名对象:主要包括servlet作用范围内相关的对象信息,比如request,session,application。

 

值栈中对象的遍历顺序

       栈顶--临时对象--模型对象--action对象--命名对象

 

值栈的应用实例:

首先创建book.jsp页面

 <s:form action="show.action">

       <s:textfield name="book.name" label="输入书名"></s:textfield>

       <s:textfield name="book.price" label="输入价格"></s:textfield>

       <s:textfield name="book.page" label="输入页数"></s:textfield>

    <s:submit value="确定"/> 

    </s:form>

创建show.jsp页面

  <s:debug></s:debug>   //创建调试

   书名:<s:property  value="%{book.name}"/><br/>

   价格:<s:property  value="book.price"/><br/>

   页数:<s:property  value="book.page"/><br/>

创建Book实体类:

public class Book {

public Stringname;//发现一个很有趣的事情,这里需要声明为公有的才行,私有的不能访问。

public int price;

public int page;

public String getname() {

return name;

}

public void setname(String name) {

this.name = name;

}

public int getprice() {

return price;

}

public void setprice(int price) {

this.price = price;

}

public int getpage() {

return page;

}

public void setpage(int page) {

this.page = page;

}

}

创建action类

    public class BookAction extends ActionSupport {

         private Bookbook; //必须要get这个对象,否则报错。同理,在debug调试的时候,有看到已经拿到值,但是就是不能提取出来。

public Book getBook() {

return book;

}

public void setBook(Book book) {

this.book = book;

}

public String execute()throws Exception{

//System.out.println("book.name:"+book.getName());

//System.out.println("book.price:"+book.getPrice());

return SUCCESS;

}

}

 

 

修改struts.xml文件

 <package name="show" extends="struts-default"  namespace="/">

   

     <action name="show"  class="com.neusoft.action.BookAction" >  

        <result>/show.jsp</result>

     </action>

</package>

 

结果如图:


<s:property value = "userPassword" />

该示例代码使用Struts 2 标签输出了Action实例的userPassword属性的值。

Action的实例通常压入值栈中。因为Action在值栈中,并且值栈是ognl的根,所以访问Action的属性时可以省略#标记)

 

-----------------------------------------------------------------------------------------------------------------

而非根对象访问

<s:property value = "#session.mySessionPropKey" />

另外,还可以通过debug标签查看值栈的值



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值