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>

 


 

posted @ 2013-02-13 18:37  一灵  阅读(193)  评论(0编辑  收藏  举报