使用通配符配置action



建立struts2wildcard項目,此實例基本仿照前面前面第7點的實例改寫而成。為了使用通配符,只需要改寫配置文件即可。此實例未使用通配時的配置文件如下:

<action name="addUser" class="com.asm.UserAction" method="addUser">

           <result name="success">/user/addUser.jsp</result>
</action>

<action name="delUser" class="com.asm.UserAction" method="delUser">

           <result name="success">/user/delUser.jsp</result>

</action>

<action name="queryUser" class="com.asm.UserAction" method="queryUser">

           <result name="success">/user/queryUser.jsp</result>

</action>

<action name="updateUser" class="com.asm.UserAction" method="updateUser">

          <result name="success">/user/updateUser.jsp</result>

</action>

我們注釋掉上面的配置,使用通配符只需如下內容即可達到相同的效果:
<
action name="*User"class="com.asm.UserAction" method="{1}User">

           <result name="success">/user/{1}User.jsp</result>

</action>

原理:當有.../addUser.action請求時,如果不能在當前應用中找到完全相同的addUser名字的Action時,通配符配置這時就起作用了,按通配原則,它便和上面的name="*User"相配成功,這里不難明了*此時代指的內容是add,再來看method恰恰是引用第一個*的內容,所以它的method此時的完整名為addUser,它剛好和com.asmUserAction中的addUser方法相對,所以它會去addUser方法,再來看下面的result配置所指代的頁面,它也用到了{1},所以它的完整頁面是/addUser.jsp。其實如果我們有良好的編程命名習慣,所有的Action我們都只需要進行一次配置。舉例:規定所有的Action類都用XXXAction來命名,類中所有的CRUD方法都用add/del/update/query。Jsp頁面也用add/del/update/query_XXX.jsp這樣的形式。即配置文件可以寫成如下形式:
<action name="*_*" class="com.asm.{2}Action"method="{1}">

           <result name="success">.../{1}_{2}.jsp</result>

</action>

Name中第一個*代表CRUD操作的名字,第二個*代表類的名字。所以訪問鏈接地址舉例如下:

.../del_User.action將訪問到User類的del方法,成功后跳到del_User.jsp頁面。補充說明{0}是代表name中所有的*組合。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM