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>

 

 

你可能感兴趣的:(jsp,框架,xml,struts)