struts2中有三种动作类:无入侵动作类,实现了Action动作类,继承了 ActionSupport的动作类
无入侵动作类:纯自己写的动作类,跟struts2没有任何关系:
public class HelloAction {
//动作方法
// 规范:1、访问修饰符public
// 2、返回值一般为String(也可以为void)
// 3、方法没有参数
public String sayHello() {
System.out.println("execute success!");
return "success";
}
}
实现了Action动作类:
public class Hello2Action implements Action{
@Override
public String execute() throws Exception {
System.out.println("实现Action接口的动作类Hello2Action执行了!");
return SUCCESS;
}
}
继承了ActionSupport动作类:
public class Hello3Action extends ActionSupport{
}
三种类在struts.xml中的配置分别如下:
<package name="p1" extends="struts-default" namespace="/test">
<action name="hello" class="com.dimples.action.HelloAction" method="sayHello">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
<action name="hello2" class="com.dimples.action.Hello2Action" >
<result name="success" type="dispatcher">/success.jsp</result>
</action>
<action name="hello3" class="com.dimples.action.Hello3Action">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
<action name="hello4">
<result name="success" type="dispatcher">/success.jsp</result>
</action>
</package>
分析:无入侵动作类配置时类名和方法名都要指定,用的不多。实现了Action接口的动作类,可以只写类名,方法名不写默认是execute();继承了ActionSupport的动作类,也可以不指定方法,默认用execute();第四种,如果什么都不指定,类名和方法名都会用默认的,也就是ActionSupport 和execute()。这个默认的类名是在struts-default.xml中配置好的。