Unmi的Struts2学习笔记(八)

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

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 表达式的一个根对 象。

时间: 2024-12-02 13:36:57

Unmi的Struts2学习笔记(八)的相关文章

Unmi的Struts2学习笔记

Unmi的Struts2学习笔记(十四) Unmi的Struts2学习笔记(十三) Unmi的Struts2学习笔记(十二) Unmi的Struts2学习笔记(十一) Unmi的Struts2学习笔记(十) Unmi的Struts2学习笔记(九) Unmi的Struts2学习笔记(八) Unmi的Struts2学习笔记(七) Unmi的Struts2学习笔记(六) Unmi的Struts2学习笔记(五) Unmi的Struts2学习笔记(四) Unmi的Struts2学习笔记(三) Unmi的S

Unmi的Struts2学习笔记(二)

记笔记,尤其是在 Blog 里记,实则是浪费时间.让学习.阅读的速度以数量 级的下降,收获时当时掌握的更细,却并不代表着真记得牢.一小段时间不用它 ,同样可以忘得很干净,也就是方便于以后能由此泛起些涟漪,如能抛砖引玉就 更幸运了.入正题: 1. 记得 Struts1 的 struts-config.xml 通常是放在 WEB-INF 目录下的, Struts2 的 struts.xml 却要放到 WEB-INF/classes 下的,傻眼了吧,反正我是 .没看仔细之前,总给我报 There is

Unmi的Struts2学习笔记(一)

Struts 从1.1使用到1.3已有多年,都升成2了,却来了个大变脸,须重新审视 一番了.从头学习,记下笔记,以要点式. 1. Struts2 与 Struts1 似乎没什么血缘关系了,承自于 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需顺其然,即是水道渠成 :相反 Struts1 的开发经验对于 Struts2 却没有太大的帮助. 2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterD

Unmi的Struts2学习笔记(十四)

生活中常为一些无伤大体之事优柔寡断,譬如买羽毛球拍是方头的还是圆头的 呢?电子产品是这款好还是那款好呢?拿此又放下,举彼又放下,最后靠概率来 决定.取其一,少段时间内总有些戚戚然,而后全然无所谓.小事无碍,大事可 就会后悔不及,无疑亦会让许多机会径直溜去. 1. 从此开始学习 Struts2 对 Ajax 的支持.这也是 Struts2 新注入的元素 .Struts2 的 Ajax 支持是建立在 Dojo 和 DWR 基础之上的.提供了 Ajax 的输 入检验,表单提交:pub-sub 事件模型

Unmi的Struts2学习笔记(十)

有一日,帮外公翻腾出他箱底的照片进行数字化留存,已是耄耋之年的外公端 详起那些记忆来,看到都是一同革命的热情小伙,不时感慨:唉!好多人都不在 啦! 1. <s:action .../> 可以用来在 JSP 页面直接调用 Action,用 name 指定 Action,executeResult(默认为 false) 指定是否包含那个 Action 转向视 图的内容:executeResult 会把视图的所有内容输出在标签位置. ignoreContextParams(默认为 false),是否

Unmi的Struts2学习笔记(五)

常有这样的梦:不知何来一本似乎是无字天书,而其中的字句却是慢慢地.渐 显可辨.同时现实中的自己完全能察觉这是一个梦,极怕即刻醒来,想多记取那 些天外之语.但总不能如愿,醒来时还留有某些字句痕迹,再过后就全然忘却. 仿佛进入的是一个太虚幻境. 1. 动态 Action:<action ../> 元素的一个前所未有的特性是,name 属性可以用通配符,class 和 method 属性中可以用 name 中的匹配参数,{0}/ {1} 的形式.举两个例子说明: ① <action name=

Unmi的Struts2学习笔记(三)

连续几日熬夜,以致左胸又起闷痛感,何来如此辛苦?不由自忖,人生至今, 印象中从来就没有过安逸与幸福感.常要回避刺疼. 1. WebWork 的核心控制器是 ServletDispatcher,映射到 *.action 的 <url-pattern> 即可.在 WebWork 与 Struts2 的 struts.xml 和 struts.properties 相对应的分别是 xwork.xml 和 webwork.properties,文件 内容几乎一样,只几个关键字的差异. 2. Strut

Unmi的Struts2学习笔记(十三)

柏杨在形容中国人不团结,喜欢窝里斗用了这样的话:每一个中国人都是一条 龙,但是三个中国人加在一起──三条龙加在一起,就成了一条猪.一条虫,甚至 连虫都不如--<丑陋的中国人>.可是他老人家走得走,要是能多有半个月的阳 寿,不知作有何感想. 1. <s:optiontransferselect.../> 正是考虑到通常使用而新加的用于 创建两个下拉框,可以来回移动列表项.有属性设置是否显示 "选定左移"."全 部左移"."选定右移&q

Unmi的Struts2学习笔记(十二)

上有所好,下必甚之.君不见屠宰场的墙头"以三个代表指导我们的屠宰工作 !" 发挥到极致:近来更是"和谐"泛滥,褒贬难分,诸如"创建人水和谐" 等 比比皆是.程序开发更需要务实,任凭天花乱坠都糊弄不了梗直的机器. 1. 初见 Struts2 的表单标签有 tooltip 以及 tooltipConfig 下的 tooltipBgColor 等属性,有一种砰然心动的感,本能的以为例如一个输入框,鼠 标悬停其中便出现一个 JS Tip 层,还可控制这个