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> &l…
默认的Struts.xml中是这样的 <constant name="struts.enable.DynamicMethodInvocation" value="false" /> There is no Action mapped for namespace [/xxx] and action name [xxx!yyy] associated with context path [xxx] 这样我们在地址栏输入感叹号动态调用方法的时候会出错,我们只需…
Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中定义了很多帮助方法) 让你的Action类实现Action接口 使用POJO的方式来实现,只要Action类中有一个返回值为String的execute方法就好了(这种方式使Action类最容易被测试) 以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里…
在使用DMI(动态方法调用)的时候要注意struts.xml配置时要把 <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 不然会出现错误 完整示例代码 struts.xml <constant name="struts.devMode" value="true" /> <constant name="…
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1. Description Struts2框架存在一个DevMode模式,方便开发人员调试程序.如果启用该模式,攻击者可以构造特定代码导致OGNL表达式执行,以此对主机进行入侵Remote command execution and arbitrary file overwrite, Strict…
Struts2的Action类中可以放置多个方法并在struts.xml中配置供页面调用.只要方法符合execute()方法的标准即返回类型是String就可以了. 同一个Action多个方法调用的方式中有三种方法 1.在<action>标签中有一个method的属性可以配置自定义的方法. 2.使用DMI方法. 3.使用通配符 今天我们着重介绍第两种方法的使用: 第一种方法的弊端是你在Action类中定义多少方法就需要使用多少个<action></action>标签,这…
动态方法调用   1.Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量 struts.enable.DynamicMethodInvocation = true 2.使用“!”方法,即action名称!方法名称. struts.xml <action name="query" class="action.QueryAction"> <result name="success">/success.jsp<…
1.使用 "!"方式,即 action名称 ! 方法名称 struts.xml 配置 <package name="user" namespace="/user" extends="struts-default"> <action name="user" class="com.bjsxt.struts2.user.action.UserAction"> <r…
当structs.xml解析到Action的时候,默认执行的是此action的execute()方法,但是实际开发中,我们的action中含有很多方法,比如说增删改查的方法,那么structs.xml怎样辨别不同的方法,然后给我们指向正确的方法呢?下面主要介绍三种方法,最后的方法是推荐的方法,前两种作为八卦大家看看即可. 方法一,通过method属性来访问 通过指定methord方法来实现,比如下面 浏览器中我们要访问的网址是:http://localhost:8090/Structs2724/…
在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多次配置,这样很繁琐,另一种方法是使用动态方法调用DMI. 举一个简单的例子—— 比如LoginAction中有add,dell方法,则 1.配置struts.xml文件 <package name="default" extends="struts-default"…