快速业务通道

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

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

Unmi的Struts2学习笔记(五)

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

常有这样的梦:不知何来一本似乎是无字天书,而其中的字句却是慢慢地、渐 显可辨。同时现实中的自己完全能察觉这是一个梦,极怕即刻醒来,想多记取那 些天外之语。但总不能如愿,醒来时还留有某些字句痕迹,再过后就全然忘却。 仿佛进入的是一个太虚幻境。

1. 动态 Action:<action ../> 元素的一个前所未有的特性是,name 属性可以用通配符,class 和 method 属性中可以用 name 中的匹配参数,{0}/ {1} 的形式。举两个例子说明:

① <action name="*Action" class="com.unmi.LoginRegistAction" method="{1}">

URL 是 registAction.action 时,会执行 LoginRegistAction 类实例的 regist() 方法

② <action name="*_*" class="actions.{1}Action" method="{2}">

URL 是 Book_save.action 时,会执行 actions.BookAction 类实例的 save () 方法

说明:{1},{2}是用来匹配 name 属性中的 *,这和正则表达式一样的,{0} 表示的完整的 name 属性值。这也是托 Struts2 的每请求产生新的 Action 的实 例才能这么用的,试想一下,Struts1 是没法针对通配符来预先加载好所有的 Action 实例的。

可由此定义一个能用的 Action,<result> 里也能用参数。

<action name="*">    <result>/

{1}.jsp</result>  </action>

2. 关于在 <action .../> 中使用通配符时的校验文件命名规则。校验 文件的搜索规则是:

① <ActionClassName>-<ActionAliasName>-validation.xml        <ActionAliasName> 为 name 属性值

② <ActionClassName>-validation.xml

同时有这两个文件时,后面的规则能与前面的规则叠加或覆盖,例如 ① 中有 name域的校验,② 中有password域的校验,这两个文件同时存在 <ActionClassName>所在路径时,会同时校验name和password域。

例如对于 <action name="*Action" class="com.unmi.LoginRegistAction" method="{1}">

URL 是 registAction.action 时,会搜索校验文件 LoginRegistAction- registAction-validation.xml 和 LoginRegistAction-validation.xml。

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

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

3. 使用通配符就会涉及到 URL 与哪个 Action 匹配的问题。例如匹配有name 为 "*"、"*Action"、"LoginAction" 的 <action .../>,如果 URL 与某 个 Action 的 name 完全相同(如 LoginAction.action),否则按顺序来匹配, 而不是按匹配度来对应。如 abcAction.action 会匹配到 "*",而不是 "*Action"。

4. 可配置默认的 Action,URL 匹配不到对应的 Action 时就用它,用 <default-action-ref ../> 配置在 <package .../> 中。

5. Struts2 支持两种 <result ../>,配置在 <action .../> 中的局部 result,配置在 <global-results .../> 中的全局 result。 <result .../> 默认的 name 属性是 "success";默认的 type 属性是 "dispatcher",即使 JSP 类型。

6. <result .../> type="plaintext" 的 <result .../> 会显 示页面的源文件,如果其中有中文一般会产生乱码,这时候可设置它的 charSet 属性为 "GBK",用 <param .../> 标记。

7. <result .../> 的 dispatcher 和 redirect 类型的区别就是一个 是转发(带请求参数、属

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号