Struts 2读书笔记-----通配符的使用

  在我们配置Action时,发现struts.xml中的<action…/>的绝大部分都相同。这时我们可以通过使用struts 2 提供的通配符映射机制来处理这个问题。

我们在配置<action …./>时,允许在指定name属性时使用模式字符串(即用“*”来代替一个或多个任意字符),接下来就可以再classmethod属性和<result…/>中使用{N}的形式来代表前面第几个*所代表是字符。

       1、 当我们在Actionname属性中使用通配符后,可以用一个<action../>元素代替多个逻辑Action   

1 <action name="*action" class="com.app.action.LoginAction" method="{1}">

       上面定义了一个一系列的逻辑Action。即只要用户请求的URL=*Action模式,都可以使用该Action。对于method属性,使用的是:{1}。表示该表达式的值就是name属性值中的第一个*的值。如用户请求的URLRegistAction。则调用RegistAction类中的regist方法。

        2、 <action .../>class属性也可以使用{N}表达式。即struts 2允许将一系列的Action配置成一个<action .../>元素。相当于一个<action .../>元素配置了多个逻辑Action    

1 <action name="*Action" class="com.app.action.{1}Action">

 

        上面的struts.xml中 class属性值使用了{N}形式的表达式。这个表达式表示了:如果RULLoginAction的请求,其中第一个*Login,即这个Action的处理类为LoginAction。指定处理方法为默认的execute()方法

        根据上面的描述:可以判断下面的struts.xml的配置

1 <actiion name="*_*" method="{1}" class="com.app.actions.{2}" >
  上面的Action模式为**_*,所以只要匹配了这个模式的请求,都可以被该Action处理。如果有一个URLRegist_Login.action。因为匹配了*_*请求,而且第一个*Regist,第二个为Login。则意味着调用com.app.action.Login处理类的Regist方法来处理这个请求。

 

  读李刚《轻量级java EE企业应用实战(第三版)—struts 2+Spring 3+Hibernate整合开发》
 

posted @   chenssy  阅读(366)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示