【struts2】action中使用通配符
在以前的學習中,<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中使用通配符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript网站设计实践(五)编
- 下一篇: C# 程序员最常犯的 10 个错误