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

来源:互联网 发布:unity3d场景模型下载 编辑:程序博客网 时间:2024/06/03 18:14

值栈的存储结构:

临时对象。该对象是在程序执行过程中,由容器自动创建并存储到值栈中。该对象的值并不固定,会随着应用不同而发生变化,当应用结束的时候,对象会被清空。(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
原创粉丝点击