action 配置(2)

(2)动态方法的调用

Dynamic method invocation (DMI)在action的名字使用!来标示要调用的方法名

格式如下:

      actionName!methodName.action

当我我们请求/news!create.action的时候就会调用news的create()方法

由于安全的原因关闭DMI 在struts.xml中配置,使用constant 元素将

struts.enable.DynamicMethodMethidInvocation属性设为false。

MDI的本质是,其实现代码扫描action中“!”,如果找到则“欺骗”框架条用“!”后的方法。

而非execute方法,但使用还是用execute的方法配置,包括验证,框架相信它正在执行

execute方法

 

那么什么时候用MDI什么时候Action元素的method方法?

如果Action的不同的方法的使用的是相同的配置(相同的引用 相同的result映射)那么可以,

使用DMI,反之使用method属性。

 

(3)模拟struts1的ForwardAction

 

<action name="index">

<package name="default" extends="struts-default">
    <default-action-ref name="hello">
    <action name="hello">
       <result>/hello.jsp</result>
    </action>
</package>

 

  <result >index</result>

</action>

 

当action的原始Class的属性值省略,那么默认使用com.opensymphoy.xword2.ActionSupport类。

ActionSupport类实现了Action的节后,并给出了execute的方法的默认实现,这个实现只是简单的返回

success 字符串,但请求/index.action时 ,框架会创建ActionSupport类的实例,调用execute的方法;

execute返回success ,于是请求被导向到/index.jsp

 

(4)默认的action

如果请求一个不存在的action是会发生404错误,采用默认action可以默认执行

 

<package name="default" extends="struts-default">
 <default-action-ref name="hello"/>
 <action  name="hello">
   <result>/index.jsp</result>
</action>
</package>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值