1.动态访问调用(DMI):
1)一个Action多个处理逻辑的被访问的实现方法之一
2)访问时url形式为:actionName ! methodName.action (actionName 是struts.xml中action元素的name属性)
3)必须设置常量来开启DMI : struts.enable.DynamicMethodInvocation=true
4)对于使用动态方法调用的方法,例如regist方法,该方法的方法声明与系统默认的execute方法的方法声明只有方法名不同,其它的方法参数、返回值类型都应该绝对相同;
2.一个Action多个处理逻辑的被访问的实现方法之二——指定<action/>的method属性:
<action name="login" class="UserAction" method="login"/>
<action name="regist" class="UserAction" method="login"/>
url:login.action 或者 regist.action
3.一个Action多个处理逻辑的被访问的实现方法之三——指定<action/>的method属性,并使用通配符:
<action name= "*Action" class="UserAction" method="{1}"/>
{1}这个表示:name属性中第一个“星号”的值,因为只有一个星号,故若为loginAction,则调用UserAction的login方法;若为registAction,则调用UserAction的regist方法;
<action name= "*_*" class="{2}" method="{1}"/>
若URL为login_UserAction.action,则匹配上面的表达式,表示用UserAction类的login方法处理这个URL
4.struts2-core-2.1.6.jar中两个重要文件,struts-default.xml 和org\apache\struts2\下的常量默认值文件:default.properties
5.类似于struts1的ActionForm功能(只封装界面参数),struts2需要使用模型驱动,实现用实体类封装界面参数和返回处理结果;
详细:
1)封装界面参数: User.java(属性有:username、password、tip)
2)Action类:
public class UserAction extends ActionSupport implements ModelDriven<User>{
private User model = new User();//必须提供
public User getModel(){//必须实现的方法
return model;
}
......
}