struts入门day03
值栈
(1)在struts2里面提供本身一种存储机制,类似域对象,是值栈,可以存值和取值。
(2)在action中把数据放到值栈里面,在页面获取到值栈的数据。
servlet和action的区别:
(1)servlet :在访问的时候创建,只创建一次,单实例对象。
(2) action :访问时创建,每次访问action时候都会创建action对象,创建多次,多实例对象。
值栈存储位置
(1)每次访问action时候都会创建action对象。
(2)在每个action对象里都有一个值栈对象。

第三种常用,节省空间。
步骤:
1.private String name;
2.生成get方法
3.然后在方法赋值 name="ada";
向值栈中存放list集合:
package cn.itcast.struts.bean; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionSupport; import cn.itcast.struts.entity.User; public class DateDemo2 extends ActionSupport{ private List<User> list =new ArrayList(); //第一步 public List<User> getList() { //第二步 return list; } @Override public String execute() throws Exception { User user = new User(); user.setUsername("lepooh"); user.setPassword("123"); user.setEmail("sin@qq.com"); User user2 = new User(); user2.setUsername("dadad"); user2.setPassword("12adad3"); user2.setEmail("aaaaaasin@qq.com"); list.add(user); list.add(user2); return SUCCESS; } }

值栈取出数据:<br/>
1.获取字符串
<s:property value="name"/>
<br/>
2.获取对象的值
<s:property value="user.username"/>
<br/>
3.获取list集合第一种方法
<s:property value="list[0].username"/>
<br/>
**********************************<br/>
4.获取list集合第二种方法<br/>
<s:iterator value="list">
<s:property value="username"/>
<s:property value="password"/>
<s:property value="email"/>
<br/>
</s:iterator>
<br/>
**********************************<br/>
5.获取list集合第三种方法<br/>
<s:iterator value="list" var="user">
<s:property value="#user.username"/>
<s:property value="#user.password"/>
<s:property value="#user.email"/>
<br/>
</s:iterator>
EL表达式为什么能取到值栈的值?
首先在request中取,取不到再从值栈中取。
filter增强了request。
浙公网安备 33010602011771号