<package name="front" namespace="/front" extends="struts-default">
<default-action-ref name="index" />
<action name="helloword" class="struts.IndexAction">
<result name="add">
/hello.jsp
</result>
<result name="love">
/love.jsp
</result>
</action>
</package>
大家看上面程序,指定了action的class="struts.IndexAction“
再来看IndexAction类
package struts;
import com.opensymphony.xwork2.ActionSupport;
public class IndexAction extends ActionSupport{
public String add(){
return "add";
}
public String love(){
return "love";
}
}
里面并没有excute()方法,这时大家给以这样配置<action name="helloword" class="struts.IndexAction" method="add">就可以返回IndexAction类中add方法的值,
但是这种方法不推荐!推荐的方法是动态调用,也就是DMI.
比如在地址栏中输入URL:http://localhost:8080/struts2/front/helloword!add
但是:如果这样输入的话,会报错(There is no Action mapped for namespace [/front] and action name [helloword!add()] associated with context path [/Struts2_10003].)
因为:struts2中默认不允许使用DMI
所以:需要在配置文件中打开: <constant name="struts.enable.DynamicMethodInvocation" value="true"/>这样大家在地址栏动态输入就可以得到预期的页面