Struts2 框架学习第四天

值栈

1 之前在web中,在Servlet 里面进行操作,把数据放到域对象中,在页面使用el表达式获取到,域对象在一定范围内,存值与取值。

2 在Struts2 中提供本身一种存储机制,类似于域对象,可以存值与取值

1)在action中吧数据放到值栈里,在页面中获取值栈的数据

3 值栈的存储的位置

  1)每次访问action的时候,都会有一个action对象,在每个action里面都有一个值栈对象

4 Servlet和action的区别

1)Servlet:默认在第一次访问的时候创建,创建一次,单实例对象

2)Action:访问时创建,每次访问的时候都会创建,多实例对象。

总结:值栈类似于域对象可以存值与取值,每个action对象中有一个值栈对象

获取值栈对象:

  1 使用一个类actionContext类里面的方法得到值栈对象

        //获取ActionContext对象

      ActionContext context=ActionContext.getContext();

      //获取值栈对象

     ValueStack stack1=context.getValueStack();

补充:栈:先进后出

值栈的内部结构

  1 值栈分成两部分

1)  root 结构 list集合

2)    context结构 map集合  key----value

1)     value存储的是一些对象的一些引用

2)     key 存储的是一些固定的值

向值栈中放数据:

  1 第一种:获取值栈的对象,调用值栈对象方法,set

  2 第二种:获取值栈对象,调用值栈对象方法push

  3 第三种:在action中定义变量,生成action方法***************

   aaction中的成员变量的位置设声明变量,生成get方法,然后在方法内给变量赋值

向值栈中放对象:

1)定义对象变量

2)生成变量的get方法

3)在执行方法中赋值

向值栈中存放list集合

1)定义list集合变量

privateArrayList<User> list= new ArrayList<User>();

2)生成变量的get方法

publicArrayList<User> getList() {returnlist;}

3)在执行的方法里面向list存放值

User user1=new User();

       User user2=new User();

       user1.setAddrest("中国");

       //。。。。。。。。。。。

       list.add(user1);

    list.add(user2);

从值栈中获取数据

使用Struts2 标签加上ognl获取数据

1 获取字符串

privateString  username;

       public String getUsername() {

              return username;}

       public String execute() throwsException {

               username="itcast";

              return "success";

       }

<s:debug></s:debug>

  <s:property value="username"/>

 

2获取对象

<s:property value="user.username"/>

  <s:property value="user.password"/>

  <s:property value="user.addrest"/>

private User user=new User();

       public User getUser(){

              return user;

       }

user.setAddrest("zhongguo");

              user.setPassqord("123");

              user.setUsername("wangmeihua");

3获取 list 对象

  privateArrayList<User> list= new ArrayList<User>();

       public ArrayList<User>getList() {

              return list;}

       User user1=newUser();

       User user2=newUser();

       user1.setAddrest("meiguo");

       //。。。。。。。。。。。。。

       list.add(user1);

       list.add(user2);

第一种方法

       <s:property value="list[0].username"/>

       <s:property value="list[1].username"/>

       第二种方式

       <s:iterator value="list">

              <!-- 遍历list -->

              <s:property value="username"/>

              <s:property value="password"/>

       </s:iterator>

       第三种方式

       <s:iterator value="list"var="user">

              <s:property value="#user.username"/>

              <s:property value="#user.password"/>

       </s:iterator>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值