Struts2.5的DMI(动态方法调用)与新增的SMI

在使用Struts2.5之后的版本,在DMI(动态方法调用)上,有与之前的版本发生一些改变

在DMI使用时,是默认被禁用的,导致通配符 * 无法正常使用

Apache Struts项目的官方解释如下:

从Struts2.3开始,我们增加了一个开关来控制DMI,我们这样做基于两个原因:

1. 如果Action的实现是纯POJO方式(既不继承自ActionSupport也不实现Action接口),这种场景下使用DMI可能导致安全问题。

2. DMI功能跟使用通配符配置Action类的方法有重叠的地方,而通配符配置的方式早在Struts1就有了。

 

Struts2.5新增的SMI(严格方法调用),官方文档说是扩展DMI。SMI默认情况下是启用的,如果使用DMI方式调用Action的方法,有两种方法

1.可以将该包的strict-method-invocation="false" 设置为false


		
			/page/loginok.jsp
			/page/loginok.jsp
			/page/loginok.jsp
			/page/loginok.jsp
		
	

2.在package包中添加regex:.*


		regex:.*
		
			/page/loginok.jsp
			/page/loginok.jsp
			/page/loginok.jsp
			/page/loginok.jsp
		
	

这两种方法都能在Struts2.5版本中实现DMI

本人研究不深,结合自己理解写下,如果有不当之处,可以指出!

 

你可能感兴趣的:(Sturts2)