Struts2中值栈
来源:互联网 发布:最好的网络电话软件 编辑:程序博客网 时间:2024/06/06 04:07
Struts2中值栈的理解
一、拦截器的初始化
如图所示呢,在一次请求过程中,拦截器首先会创建以及初始化一个值栈对象以供使用。初始化过程中,在Map对象里面放了request=,session=,application=,sttr=,parameters=,....;在Stack里放了action对象和其他一些对象(注意对象栈是先进后出,类似弹匣)。由此可见值栈的生命周期是一次请求。
另外的拦截器,比如说ModelDriven和Params也会对值栈对象进行操作。ModelDriven的初始化会把model压到栈顶
Params的初始化会把参数设置到值栈对象里,从栈顶开始先查找对象栈里对象的属性,找到就初始化进去,找不到再放到Map的parameters里面。 例如参数是这样:xx.action?id=3&name=ab&age=20&aaa=100,而栈中从栈顶的对象初始化依次为model(id=3 name=ab)、action(id age=20),而aaa参数会放到Map的parameters里面。
二、操作值栈
1.在action类中对值栈的操作
操作Map: ActionContext.getContext()
.put(k, v)
.get(k)
或者
ActionContext.getContext().getValueStack()
.put(k, v)
.get(k)
操作Stack: ActionContext.getContext.getValueStack()
.push(obj)
.pop()
2.在Result中操作值栈(大多在jsp文件中的操作)
通过使用OGNL表达式操作值栈
格式:struts.xml中,格式如${ognl}
Jsp文件中,格式如%{ognl},而且必须写在struts2的自定义标签的属性中,在外面不会被解析
语法: user = findValue("user") *
#user = map.get("user")
#user.name = map.get("user").getName()
* findValue()的查找顺序:
①从对象栈的栈顶开始查找对象的属性,找到返回
②如果对象栈中找不到,进Map查找对应key,返回value,找到返回
例子:
在值栈的Map里面有roleList的List,取出来循环
循环标签还有个特定的功能,循环一次开始后,会把对象拿到栈顶,因此id,name,dedcription会取到当前对象的属性,这里的“%{}”可以省略。
看官看到这里会有一问:
EL表达式可以使用值栈吗?
EL表达式原本的查找顺序为:
page,request,session,application,找到返回。
值栈并不在EL表达式的作用范围之内,因此不能使用。但是
struts2对request对象进行了增强,即StrutsRequestWrapper对象,里面重写了getAttribute()方法:在request找不到之后到值栈里面找,因此
EL表达式的查找顺序变为:page,request,valueStack.findValue(),session,application。
所以上述例子也可以写为:
- Struts2中值栈
- struts2中值栈的理解
- Struts2中值栈的理解
- Struts2中值栈的理解
- Struts2中ognl中值栈
- struts2中值栈的理解
- Struts2中值栈的理解【转】
- 深度剖析Struts2中值栈的概念
- 【java】Struts2中值栈的理解
- struts2页面取action中值
- 中值
- struts2向标签s:textfield/输出action中值
- 如何取出Vaule Stack值栈中值??
- 用struts2 标签和Jquery 插件实现动态值,自动检索填充中值
- jsp如何获取struts2 action中值(普通属性,domain属性,集合,application,session.....)
- 关于struts2中action如何接收前端多个name相同input标签中值
- SSH或Structs2项目中值栈为空的问题
- 中值模糊
- Why me?Why here?
- 51Nod-1267 4个数和为0【排序+有序组合查找】
- ZooKeeper学习第二期--ZooKeeper安装配置
- Wonderware fsGateway连INSQL,在平台的故障处理
- javaweb请求与响应验证码案例点击"看不清,换一张"切换图片的新思路
- Struts2中值栈
- 数据结构之Dijkstra算法
- NFS服务器安转和使用
- C++ 默认构造函数
- POJ3277-City Horizon
- 设计模式之职责链模式
- 微服务学习一服务化架构的演进历史
- python启动脚本--daemon形式
- 链表带环问题