struts中action的配置方式

我們先簡單寫一個Action的類,方便對應(yīng)說明
每種方法我們都實(shí)現(xiàn)UserAction中的3個方法

package test;
public class UserAction {
    public String execute(){
        return "success";
    }
    
    public String add(){
        return "add";
    }
    
    public String delete(){
        return "delete";
    }
}
  • method屬性區(qū)分調(diào)用action

這種方法是使用多個action每個action的name都不同來區(qū)分,struts.xml:

<struts>
    <package name="test" extends="struts-default">
        <action name="execute" class="test.UserAction">
            <result name="success">/execute.jsp</result>
        </action>
        <action name="add" class="test.UserAction" method="add">
            <result name="add">/add.jsp</result>
        </action>
        <action name="delete" class="test.UserAction" method="delete">
            <result name="delete">/delete.jsp</result>
        </action>
    </package>
</struts>

如果這樣寫代碼就會很多,不夠簡潔

  • 動態(tài)方法調(diào)用

這個是使用struts2中的(!)符來動態(tài)的調(diào)用對應(yīng)的方法

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="test" namespace="/" extends="struts-default">
        <global-allowed-methods>add</global-allowed-methods>
        <action name="User" class="test.UserAction">
            <result name="success">/execute.jsp</result>
            <result name="add">/add.jsp</result>
            <result name="delete">/delete.jsp</result> 
        </action>
    </package>
</struts>

調(diào)用的語法
actionName!methodName或者actionName?method:methodName
另外這一句要加在前面
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
因?yàn)檫@種調(diào)用存在安全問題,2.5中是不允許的
<global-allowed-methods>add</global-allowed-methods>
add方法也要添加允許

  • 通配符映射

struts提供了(*)星號通配符來解決大量action映射的問題

<struts>
    <package name="test" extends="struts-default">
        <global-allowed-methods>add</global-allowed-methods>
        <action name="*_*" class="test.{1}Action" method="{2}">
            <result name="{2}">{2}.jsp</result>
        </action>
    </package>  
</struts>

如果我要調(diào)用UserAction中的add()方法,我們的action就要寫User_add
{1}就代表了User,{2}就代表了add
這樣寫就是使struts的action配置文件簡潔了很多

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容