Struts2的DMI跟SMI
我使用的Struts2的版本是2.5.2,今天在使用Struts2的DMI(动态方法调用)的时候出现了一个有趣的问题,我先把我的配置及代码展示一下:
web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml
<struts>
<constant name="struts.devMode" value="true" />
<package name="myPack" namespace="/" extends="struts-default">
<action name="index">
<result name="success">/index.jsp</result>
</action> <action name="path" class="com.stone.action.PathAction">
<result name="path">/path.jsp</result>
</action>
</package>
</struts>
PathAction
public class PathAction {
public String foo() {
return "path";
}
}
index.jsp
<body>
<a href="path/path!foo">link</a>
</body>
当我点击index页面的链接的时候得到如下错误页面:
aaarticlea/png;base64,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" alt="" />
这是因为从Struts2.3开始,DMI默认是禁用的,Apache Struts项目的官方解释如下:
从Struts2.3开始,我们增加了一个开关来控制DMI,我们这样做基于两个原因:
1. 如果Action的实现是纯POJO方式(既不继承自ActionSupport也不实现Action接口),这种场景下使用DMI可能导致安全问题。
2. DMI功能跟使用通配符配置Action类的方法有重叠的地方,而通配符配置的方式早在Struts1就有了。
如果你有安全性的顾虑或更喜欢通配符配置方式的话,请在struts.xml中做如下设置:<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
该开关默认是关闭DMI的,为了使用DMI,我必须在我的struts配置文件中将其打开,但是打开后我又得到了另外一个错误:
aaarticlea/png;base64,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" alt="" />
也就是说我在PathAction类里面定义的foo方法是不被允许的,那到底哪些方法是允许的呢?这里面就需要讲到Struts2.5新增的SMI(严格方法调用),官方文档说是扩展DMI,但是个人感觉新增的SMI更像把DMI边缘化了,SMI的大体使用方式就是,如果你想用DMI的方式调用Action的方法,那么该方法名必须显示地在Struts配置文件中定义,可以写方法名或是使用通配符等等,我使用了如下简单的方式来配置:
<action name="path" class="com.stone.action.PathAction">
<result name="path">/path.jsp</result>
<allowed-methods>foo</allowed-methods>
</action>
再次执行,果然可以了。
总体来说,Struts2.5新增的SMI概念还是出于安全性的考量,这样就不会让客户端想要调用Action中哪个方法都可以。
Struts2的DMI跟SMI的更多相关文章
- Struts2中DMI(动态方法调用)的错误问题(There is no Action mapped for namespace [/xxx] and action name [xxx!yyy] a)
默认的Struts.xml中是这样的 <constant name="struts.enable.DynamicMethodInvocation" value="f ...
- Struts2的通配符配置方式
Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中 ...
- struts2 DMI
在使用DMI(动态方法调用)的时候要注意struts.xml配置时要把 <constant name="struts.enable.DynamicMethodInvocation&qu ...
- struts2 CVE-2012-0392 S2-008 Strict DMI does not work correctly allows remote command execution and arbitrary file overwrite
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1 ...
- Struts2 DMI的使用
Struts2的Action类中可以放置多个方法并在struts.xml中配置供页面调用.只要方法符合execute()方法的标准即返回类型是String就可以了. 同一个Action多个方法调用的方 ...
- struts2的动态方法调用(DMI)和通配符映射
动态方法调用 1.Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量 struts.enable.DynamicMethodInvocation = true 2.使用“!”方法,即 ...
- struts2 中使用DMI(动态调用方法)方式配置action
1.使用 "!"方式,即 action名称 ! 方法名称 struts.xml 配置 <package name="user" namespace=&qu ...
- Struts2动态方法调用(DMI)
当structs.xml解析到Action的时候,默认执行的是此action的execute()方法,但是实际开发中,我们的action中含有很多方法,比如说增删改查的方法,那么structs.xml ...
- Struts2动态调用DMI及错误解决方法
在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多 ...
随机推荐
- DevExpress 学习使用之 TreeList
1. 必须先添加列,否则不能显示任何节点内容 2. 如果是代码添加列时,一定要写明 VisibleIndex = 几,没有这句,不显示 3. 顶级结点用 TreeList.AppendNode 来添加 ...
- JS OffsetParent属性
offsetParent 属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素. 如果这个容器元素未进行CS ...
- HTML5-WebSocket-初探
1.环境准备 主要是用<HTML5 程序设计>(第二版)作为学习参考资料.但是上面用的WebSocket服务器是用python写的.偶不懂python,于是得找另外一个替代实现,这里适用n ...
- Clob类型转换成String类型
oracle中表结构如下: create table GRID_RESOURCE ( ID VARCHAR2(50), CNNAME VARCHAR2(50), TYPE VARCHAR2(50), ...
- Introduction to OOC Programming Language
Introduction to OOC Programming Language 文/akisann @ cnblogs.com / zhaihj @ github.com 本文同时发布在github ...
- MBR . Have it removed!
To know what it is, https://wiki.archlinux.org/index.php/Master_Boot_Record For a SD card, dd if=/de ...
- Java7新特性
① 新增了switch对字符串的支持,也就是说可以在switch之后直接使用字符串来进行判断,语法基本与Java7之前支持的语法一样. ② 对数值字面量的增强支持,首先是可以在源代码中直接使用二进制数 ...
- spring mvc页面显示图片失败
在配置文件中需要映射静态资源 <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时, ...
- idea下git版本回退
首先选中项目名,然后 ,show history, copy你想要回退版本的reversion number, ,然后在branches里check out你想要回退的版本
- 做个简单的Redis监控(源码分享)
Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...