在以前的学习中,<action>元素的配置,都是用明确的配置,其name、class等属性都是一个明确的值。其实Struts2还支持class属性和method属性使用来自name属性的通配符。

  1)接下来看看使用通配符的示例,如果我们使用以下<action>配置:

<action name="personAction_*" class="cn.javass.action.personAction" method="{1}">
<result name="toWelcome">/s2impl/welcome.jsp</result>
</action>

在上面的配置中:

name属性的值中“*”代表长度不为0的任意字符串,因此,它可以响应的action只需要名称中间有一个下划线即可。比如页面可访问的action名称为:HelloWorld_create.action、HelloWorld _update.action等等。

在name属性定义了通配符之后,class属性使用第一个通配符(使用{1}作为占位),method属性使用第二个通配符。

如果使用HelloWorld_create.action作为访问的action名称的话,struts.xml中action名称为HelloWorld_create,第一个通配符匹配HelloWorld,第二个通配符匹配create。因此,由cn.javass.action.action.HelloWorldAction的create方法来响应。

  2)那么,对于<result>元素,能不能也使用<action>元素的name属性定义的通配符呢?答案是可以的,假如有如下的配置:

<action name="*_*_*_*" class="cn.javass.action.action.{1}Action" method="{2}">
<result name="{3}">/${folder}/{4}.jsp</result>
</action>

  3)在使用通配符的时候,也有可能不止一个使用通配符的<action>元素可能匹配这次URL的访问,看以下的配置文件:

<action name="HelloWorld_create" class="cn.javass.action.action.HelloWorldAction" method="create2">
<result name="toWelcome">/s2impl/welcome.jsp</result>
</action>
<action name="*_*" class="cn.javass.action.action.{1}Action" method="{2}">
<result name="toWelcome">/s2impl/welcome.jsp</result>
</action>

  这时候,如果访问“/helloworld/HelloWorld_create.action”,Struts2首先会查找是否有精确匹配的<action>元素,这时候无论以上<action>元素以什么顺序出现,Struts2肯定会先找到并使用精确匹配的<action>元素。但是,如果没有精确匹配的<action>元素,则Struts2会找到第一个匹配的使用通配符的<action>元素来使用。

  通配符对于那些简单的CRUD的工程或软件原型来说,只要Action的包名、Action的类名、对应的方法名写的有规律的应用,能大大简化配置的工作。

最新文章

  1. .Net下几个服务框架介绍
  2. iOS 适配iOS9
  3. linux系统如何将系统中的文件名改为英文?
  4. 用github pages展示你的静态网页,多项目支持
  5. Hibernate 异常 —— No CurrentSessionContext configured
  6. Mac OS X下高速拷贝文件路径
  7. PHP中的抽象类与接口
  8. Logistic回归总结
  9. PureMVC(JS版)源码解析(三):Observer类
  10. [Angular 2] WebStorm - Managing Imports
  11. 在android源码环境下写上层应用的一个初步解决方法
  12. 正整数从1到N,输出按照字典序排序的前K个数
  13. 【转】Centos 设置IP地址的几种方式
  14. hdu1690 Bus System (dijkstra)
  15. python tp_ready函数分析
  16. E: Unable to locate package openjdk-8-jdk 及java version 切换
  17. 企业域的冗余设计①:DHCP冗余设计(上)
  18. scala-04-set操作
  19. SpringMVC关于ajax提交400错误(后台获取为null)
  20. 百度地图JavaScript如何清除指定类型的覆盖物

热门文章

  1. Linux文件解压缩详解
  2. 好久没来了,重出江湖,共享个python34+pyqt+pyserial串口工具源码
  3. haproxy hdr和path
  4. 灵活使用getconf命令来获取系统信息
  5. linux命令学习笔记
  6. 20个热门jQuery的提示和技巧
  7. JS中的逻辑哲学
  8. [IOS]图标尺寸
  9. FIFO算法
  10. Mongodb集群搭建