您的位置:首页 > 编程语言 > Java开发

Struts2 框架学习第四天

2018-03-31 21:40 274 查看

值栈

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: