动态调用:
在浏览器里输入http://localhost:8080/项目名/Action名!方法名,即可以实现动态调用,而不需要为Action中的每个方法都在struts.xml进行action的配置。注意:要把struts.enable.DynamicMethodInvocation的值为true,如
<constant name="struts.enable.DynamicMethodInvocation" value="true" />,否则无法动态访问
Action.java
import com.opensymphony.xwork2.ActionSupport;
public class TestActionDynamic extends ActionSupport{
@Override
public String execute() throws Exception {
System.out.println("TestActionDynamic execute...");
return super.execute();
}
public String add(){
System.out.println("TestActionDynamic add...");
return SUCCESS;
}
public String del(){
System.out.println("TestActionDynamic del...");
return SUCCESS;
}
public String updata(){
System.out.println("TestActionDynamic updata...");
return SUCCESS;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<span style="color:#ff0000;"><constant name="struts.enable.DynamicMethodInvocation" value="true" /></span>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="testDynamic" class="com.zucc.action.TestActionDynamic" >
<result >/Hello.jsp</result>
</action>
</package>
</struts>
默认Action:
在<package>下配置<default-action-ref name="Actio名"></default-action-ref>,如果在浏览器中输入的Actio名无效,即自动访问默认的Actio
注意:在struts2.3.4以下如果设了默认Action,再进行动态调用Action,会出现错误,在struts2.3.4以上就不会发生错误。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<span style="color:#ff0000;"><default-action-ref name="testDynamic"></default-action-ref></span>
<action name="testDynamic" class="com.zucc.action.TestActionDynamic" >
<result >/Hello.jsp</result>
</action>
</package>
</struts>
在浏览器输入http://localhost:8080/Struts2/任意字符串, 就是调用名为TestActionDynamic的Action