传智播客--struts2.x的ActionContext,ValueStack和常用标签介绍

struts2学习一天了.张老师讲的太细太深了.呵呵,课也在网上直播了.听的真的好过瘾啊.果然是名不虚传啊.讲的那么深,对刚刚接触struts2 接受起来还真得下点功夫啊.

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>

你可能感兴趣的:(struts,session,application,url,iterator,action)