快速业务通道

Unmi的Struts2学习笔记(八) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Unmi的Struts2学习笔记(八)

时间:2011-09-04 Unmi.cc 隔叶黄莺

吾同人数进寺庙,却从未点过一柱香。概因精神世界里终无所寄托。既不为生 儿还是女而筹算,也无须因落下亏心事要请得神灵庇佑。想来,真要的东西,阿 弥陀佛也给不了。在物价飞涨之际,谁能给你加薪,何来民主,看看这辈子能不 能有机会参与选一回国家领导人,少说几句了,就这点言论自由了。

1. Struts 2 标签库以 OGNL 表达式为基础,对集合、对象的访问功能更强了 。Struts 2 的标签用统一的前缀,一般为 "s",不再像 Struts1 那样分 <html:.../>、<bean:.../>、<logic:.../> 等多个命名空间 的标签。如果在 JSP 2.0 之前用过 JSTL,也就知道什么是 OGNL 表达式的。

2. Struts2 提供了很多 Struts1 标签没有的东西,如日历、树型控件、Tab 页等;同时可借助 DWR,有标签支持 Ajax,除此还提供了主题、模板,还允许在 页面中使用自定义组件。Struts2 标签都定义在 URI 为 "/struts-tags" 的命名 空间下,Struts2 的标签库功能很强大,使用起来却更简单。

3. 同 Struts1 相比,Struts2 的标签库不依赖于作何表现层技术,即大部分 标签,不光能在 JSP 中用,还能在 Velocity 和 FreeMarker 等模板中用。 Struts1 中要支持 EL,必须引入 struts-el.jar 和 JSTL 类库;而 Struts2 默 认支持 OGNL、JSTL、Groovy 和 Velocity 表达式。

4.Struts2 的标签定义文件是在 Struts2-core-2.x.x.jar 的 META-INF 目录 中的 struts-tags.tld。相比 Struts1 的标签定义是在 struts.jar 的 META- INF/tld 目录下的 struts-bean.tld、struts-html.tld等(Struts1 从 1.3 开始 ,包也分成了 struts-core-1.3.x.jar 和 struts-taglib-1.3.x.jar,所以 struts-bean.tld、struts-html.tld 等就在 struts-taglib-1.3.x.jar 的 META-INF/tld 目录下)。

5. Servlet 2.4 开始的应用在启动时会递归搜索 classpath 下的 tld 文件 加载;Servlet 2.3 的应用在启动时好像会自动搜索 WEB-INF 目录下的 tld 文 件加载,再之前的 Servlet 版本就必须在 web.xml 文件中加上<taglib>来指定 tld。

6. XWork 在原有的 OGNL 基础上增加了对 ValueStack 的支持。Struts2 的 Stack Context 需要多个“根”对象,其中 ValueStack 只是多个“根”对象的 其中之一。如果要访问的属性属于根对象,则可以直接访问该属性,否则必须使 用一个命名空间,如 #bar。

ValueStack 是以属性名为 "struts.valueStack" 的 com.opensymphony.xwork2.util.OgnlValueStack 对象存在于 request 中的。

7. Struts2 中,系统的 ValueStatck 是 OGNL 表达式的第一个根对象 (key=com.opensymphony.xwork2.util.ValueStack.ValueStack),如果最近的 Action 存在,则 Action 上下文是第二个根对象 (key=com.opensymphony.xwork2.ActionContext.name,只是 Action 的名字而已 )。可以用 <s:debug/>显示出 Stack Contenxt 和Value Stack Contents 。

8. 标准 OGNL 表达式是:"#" 表示从根开始,例如 request 是一个根

<s:property value = "#request[''struts.request_uri'']" /> 输出 当前请求的 URI,因为 "struts.request_uri" 包含有 ".",不然也可以用 #request.xxx 的形式。

如果,只写成属性名,说明是根对象的 name 属性,但 Struts2 会有多个根 对象,会不明确,因此这个时候 <s:property value="${name}"/>就会访 问 ValueStack 中的对象的属性 name-- ValueStack 是 OGNL 表达式的一个根对 象。

Unmi的Struts2学习笔记(八)(2)

时间:2011-09-04 Unm

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号