实现Action的几种方法
1. implements Action
2. extends ActionSupport
3. 也可以不继承任何父类不实现任何借口
#当一个类有多个方法
package com.struts.test; import com.opensymphony.xwork2.ActionSupport; public class Test extends ActionSupport { private static final long serialVersionUID = 1L; @Override public String execute() throws Exception { System.out.println("execute"); return SUCCESS; } public String add() throws Exception { System.out.print("add"); return "add"; } public String update() throws Exception { System.out.print("update"); return "update"; } public String delete() throws Exception { System.out.print("delete"); return "delete"; } }
如上方法,里面有add()、update()、delete();
这么多方法该如何配置?
1. 配置多个action
<package name="struts_two" extends="struts-default"> <!-- 执行Test类中的update方法 --> <action name="test_one_struts" class="com.struts.test.Test" method="update"> <!-- 返回跳转到Test_update.jsp页面 --> <result name="update">/Test_update.jsp</result> </action> <!-- 执行Test类中的delete方法 --> <action name="test_one_struts" class="com.struts.test.Test" method="delete"> <!-- 返回跳转到Test_delete.jsp页面 --> <result name="delete">/Test_delete.jsp</result> </action> <!-- 执行Test类中的add方法 --> <action name="test_one_struts" class="com.struts.test.Test" method="add"> <!-- 返回跳转到Test_add.jsp页面 --> <result name="add">/Test_add.jsp</result> </action> </package>
2.动态配置(不推荐)
<!--#2.5版本需要打开动态配置 <constant value="true" name="struts.enable.DynamicMethodInvocation"/> --> <package> <action name="test_one_struts" class="com.struts.test.Test"> <result name="update">/Test_update.jsp</result> <result name="delete">/Test_delete.jsp</result> <result name="add">/Test_add.jsp</result> </action> </package>
3.通配符配置(推荐)
<package> <!-- * 通配符 根据你输入的路径来判断你是执行什么方法 比如:你输入 Test_delete,那么就会执行Test_类的delete方法,并且跳转到对应的页面 --> <action name="Test_*" class="com.struts.test.Test" method="{1}"> <result name="{1}">/Test_{1}.jsp</result> <!-- 2.5版本及以上必须配置<allowed-methods>标签,允许的方法 --> <allowed-methods>add,delete,update,select</allowed-methods> </action> </package>