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

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

<action name="*_*" class="cn.javass.action.action.{1}Action" method="{2}">  <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的类名、对应的方法名写的有规律的应用,能大大简化配置的工作。

  参考资料:http://www.iteye.com/topic/1124526

转载于:https://www.cnblogs.com/ningvsban/p/3734574.html

【struts2】action中使用通配符相关推荐

  1. struts2 action中result参数详解

    chain 用来处理Action链 com.opensymphony.xwork2.ActionChainResult dispatcher 用来转向页面,通常处理JSP org.apache.str ...

  2. struts2 Action中获取session,request,respon值

    在struts2中有两种方式可以得到这些对象 1.非IoC方式 Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态方法getConte ...

  3. struts2 action 中autowired 不能注入

    一.pom.xml <dependency><groupId>org.apache.struts</groupId><artifactId>struts ...

  4. struts2 的一个action中配置多个result input

    主题:struts2 的一个action中配置多个result input 讨论下 本文来自: 浪曦视频在线 作者: hoojo 发表于: 2009-6-4 19:05 阅读: 2005 人 收藏 看 ...

  5. struts2实验2:struts2.xml action中* ,{}以及${}

    p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 < ...

  6. Struts2 注解中跳转 action

    转自:http://hi.baidu.com/fo_guo/item/71f6b636fec1e8cf382ffa00 在xml中跳转action我想大家都是会的,那么注解中跳转其实也很类似,废话不多 ...

  7. struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性

    有两种方式可以实现在Action中使用Servlet的API.一种是使用org.apache.struts2.ServletActionContext类,另一种是使用com.opensymphony. ...

  8. struts2配置文件中action的name属性

    struts2配置文件中action的name属性的第一个字符不要加斜杠 <action name="see" class="baoxiuManage_seeAct ...

  9. struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式

    本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...

最新文章

  1. flask 与layui冲突
  2. Java并发编程实战~Guarded Suspension模式
  3. [Node.js] node.js入门
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线论坛管理系统
  5. 类代理java设计模式---动态代理(简单笔记)
  6. 汉语诗词 LaTeX 排版样式
  7. 常用的电子产品安规基础标准 - IEC Standards(CB转换或各国安规标准)
  8. mtk camera faq
  9. android代码修改view的宽度,代码动态改变view的大小
  10. 成语接龙快速接到“一个顶俩” (附api)
  11. android x86 uefi 安装教程,如何在Hyper-V上安装android-x86系统
  12. idea 占用内存优化调整
  13. 进入安全模式后重新启动计算机,进入Win7安全模式方法一:开机按F8键进入 我们在重启或者电脑开机的时候...
  14. 平分法及牛顿法求解平方根
  15. 地图编辑器开发(五)
  16. 前端JS base64转图片
  17. 综合培养学生脑力思维的少儿编程
  18. 计数器概念和异步二进制计数器
  19. 芯片制程3nm5nm7nm
  20. PowerBuilder10在win7上的无法启动的解决

热门文章

  1. c语言输出最后不带空格,新人提问:如何将输出时每行最后一个空格删除
  2. 089_学习过的html标签
  3. 025_CSS框模型概述
  4. mysql 查询两表 两列 比较大小写_mysql 查询表中列的数据不区分大小写的解决
  5. android沉浸代码,3秒钟搞定Android沉浸式状态栏
  6. python类实例_类和实例
  7. python随机生成数字_Python 中生成 0 到 9 之间的随机整数
  8. 不需要网络的调频收音机_测试工程师真的不需要懂网络知识么?
  9. python计算3j系数_python数值基础知识浅析
  10. 一周一论文(翻译)——[SIGMOD 2016] RDMA over Commodity Ethernet at Scale