11.动态方法调用和通配符
动态方法调用两种方式:
1)用"!"无须配置
无须配置就可以直接调用Action中的非execute()方法的方式,
就是使用Struts2的动态方法(DMI)。动态方法调用(DMI)是在action的名字中使用感叹号"!"来标识,
如:
http://localhost:8080/day01/show!save 执行Action类中的save方法
http://localhost:8080/day01/show!del 执行Action类中的del方法
2)用通配符需要配置
<package name="ac" extends="struts-default"> //默认action,处理其它所有 无action处理的url, 要放在其它action配置的前面 <default-action-ref name="aaa"></default-action-ref> <!-- 动态方法调用 --> <action name="dymc" class="cn.xt.ac.DymcAction"> </action> //1: //* 表示由调用者指定任意的参数 ----------对应{1}表示 第一个* //即 http://localhost:8080/day01/dyabc -----method="abc" <action name="show*" class="cn.xt.ac.DymcAction" method="{1}"></action> //或 <action name="show_*" class="cn.xt.ac.DymcAction" method="{1}"></action> //2:通配符影射某个类 // url: user_Del_save ---> DelAction.save() // url: user_Save_execute ---> SaveAction.execute(); //即: 当用户在地址栏输入 //http://localhost:8080/day01/user_Del_save 表示 执行DelAction.save(); //http://localhost:8080/day01/user_Save_execute 表示 执行SaveAction.save(); <action name="user_*_*" class="cn.xt.user.{1}Action" method="{2}"> </action> //如果使用"/"必须设置是否支持"/",默认为false不持能 //<constant name="struts.enable.SlashesInActionNames" value="true"></constant> <action name="user/*/*" class="cn.xt.user.{1}Action" method="{2}"> </action> //设置只拥有一个* ,默认action,执行所有其他action不执行的url--> <action name="*"> <result>/index.jsp</result> </action> </package>