打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
struts2.x的ActionContext,ValueStack和常用标签介绍

struts2.x的ActionContext,ValueStack和常用标签介绍

1.ActionContext
封装Action所需的环境信息和数据
ActionContext提供了各种针对ValueStack关联的Context的便利操作方法:
put()方法和get()方法就是往该Context Map对象中添加数据和取数据。
getApplication() 得到application域中的所有attribute的map对象;
getSession()得到代表session域中的所有 attribute的map对象;
getParameters()得到代表所有请求参数的map对象;
getLocale()得到当前用户的Locale信息,是综合了session中保存的Locale与浏览器请求消息中的Locale的结果。
 
2.ValueStack
提供的方法管理内部的堆栈和关联的Context
setValue为ognl表达式寻址到的对象设置属性值。
findValue方法使用OGNL表达式获取结果。
findString方法对findValue方法获取的结果调用转换器转成字符串,如果该对象的类型没有相关转换器,则调用toString方法,并返回结果字符串。一个特殊之处:如果不用#前缀访问ValueStack Context中的对象,则该对象必须是String类型。
 
3.struts2.X中的一些常用标签
<s:property> 标签用于输出某个OGNL表达式的值,可以认为其内部使用的是ValueStack对象的findString方法。如果没有设置value属性,则输出 ValueStack栈顶的对象。
特例:如果采用不加#前缀的方式输出Context中的某个对象,这个对象必须是string类型。
<s:push> 标签用于将OGNL表达式的值压入栈顶。
<s:bean>标签用于实例化一个JavaBean对象,并将其压入栈顶。如果设置了 var属性,还会将实例化的对象存储进ValueStack关联的Context中。
<s:set>标签用于将某个值存入指定范围域中,通常用于将一个复杂的ognl表达式用一个简单的变量来进行引用。
scope属性:指定变量被放置的范围,该属性可以接受 application、session、request、 page或action。该属性的默认值为action,文档说即表示同时存储进request作用域和OGNL Context中,但实验结果是只存储进了OGNL Context中。
value属性:赋给变量的ognl表达式结果.如果没有设置该属性, 则将ValueStack栈顶的值赋给变量。
<s:if/elseif/else>等标签用于判断test属性中指定的ognl表达式的结果是否为true,为真则执行标签体重的内容。 
<s:iterator>标签用于迭代一个OGNL集合,并逐一将迭代出来的元素压入栈顶和弹栈。
status属性:创建代表当前迭代状态的IteratorStatus对象,并指定将其存储进ValueStack Context中时的key。
 
4.<s:url>和<s:a>标签的四个好处
使用<s:url action=“” namespace=“”method=“”/>
不用关心web应用程序的路径和 Action映射的扩展名。
<s:url>中没有指定namespace属性时,将根据浏览器当前所访问的url地址来推测包名,并与action属性指定的内容一起生成最终的url地址。
可以自动附加jsessionid参数进行url重写。
可以对参数信息进行url编码。 
备注:jstl中的<c:url>标准标签也有<s:url>标签的后两个作用。
直接使用<s:url />标签可以获得当前地址,只有使用includeParams属性会带上原来的请求参数。大型网站的链接地址总是要带上userid之类的信息。
 
5.国际化
配置全局的缺省国际化资源文件
在JSP页面中用<s:text name=“”>、<s:property value=“%{}”>
如果在资源包中没有找到某个key对应信息内容,将直接输出该key。
增加java包范围下的资源包,对于有多级包名的情况,package.properties文件放在哪一级包名下都是可以的。
在Action类的源代码中用ActionSupport类的getText方法获取国际化资源消息
用<s:i18n> 标签来明确指明从哪个资源包中获取信息。
在<s:text>标签和getText()方法中如何为占位符填充参数。
<s:param name=“名称不重要” value=“ognl expression”/>
<s:param>normal text</s:param>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Ognl表达式基本原理和使用方法
Struts2中OGNL,valueStack,stackContext的学习
STRUTS2中的OGNL
Struts2_ValueStack, OGNL详解
Struts2 中的值栈是什么?
深度解析Struts2中ValueStack
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服