`

关于struts.enable.DynamicMethodInvocation = true

 
阅读更多

关于struts.enable.DynamicMethodInvocation = true

struts2中的struts.enable.DynamicMethodInvocation = true 的用法 很多网站都说的很简单 就是关闭动态方法调用

具体点应该如下:

其实在url里我们可以这样访问

http://localhost:8080/exam/login!checkLogin.action

login!checkLogin    login是我的struts.properties配置文件中的一个action的名字 而checkLogin是这个action类里的一个方法。

我们可以使用action名 + 感叹号 + 方法名进行方法调用  这个在开发阶段开启可以加速我们开发人员的开发调试,但是在项目完成时还是设为false的好。毕竟直接访问类的方法是不安全的。

至于xml中的通配符(*)在设为 false时还是可以用的

 

 

在Struts 2的核心jar包-struts2-core中,有一个default.properties的默认配置文件。里面配置了一些全局的信息,比如:

struts.enable.DynamicMethodInvocation = true,-动态方法调用,为true时,就可以在struts.xml配置“*”的通配符,来调用action里的方法(下面介绍)

struts.action.extension=action,-action 的后缀名,可以改成.to、.html等等

    还有很多,但那个default.properties是不能被更改的。如需要更改里面的配置信息,可以在src根目录下建一个 struts.properties的配置文件,然后重写所要更改的配置信息。

     Wildcards通配符

    通配符有点类似于变量,但这里的变量是用“*”表示,看看一个例子

<action name="login_*" method="{1}"
class="com.zhang.action.LoginAction">
<result name="success">/pages/success.jsp</result>
<result name="error">/pages/error.jsp</result>
</action>

    这里在action的name中通配了一个login_*,它对应映射的是method属性。如果在客户端发生一个这样的请 求:login_init.action、login_show.action等,这时服务器就会自动调用这个action中的init()方法或 show()方法。这里的method="{1}"代表是第一个“*”,如果有多个星号,就要根据顺序来通配{1},{2},{3}....

    在如下面多个星号的配置:

<action name=”*/*” method=”{2}” 
class=”com.zhang.action.{1}Action”>
<result name=”success”>/pages/success.jsp</result>
<result name=”error”>/pages/error.jsp</result>
</action>

    其中第一个“*”映射到具体的某个action类,第二个“*”映射到该类的方法。不过这里要注意的name=”*/*",是相当于客户端要发送如 “Login/init.action”,在地址栏里就变成了/struts/Login/init.action,那服务器到底是会认 /init.action还是/Login/init.action呢。其实服务器默认还是/init.action,如果要使带"/"的action生 效,需要把default.properties中的

struts.enable.SlashesInActionNames = false改为true就可以,其实这样做还挺麻烦的,只要把name写 成"*_*"就不存在斜杠问题了

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts.xml和struts.properties配置详解

    8. **struts.enable.DynamicMethodInvocation**: 启用或禁用动态方法调用,`true`启用,`false`禁用,一般为了安全性建议禁用。 **三、default.properties文件** `default.properties`是Struts2的默认配置文件,...

    Struts2最新漏洞升级2.3.32版本

    &lt;constant name="struts.enable.DynamicMethodInvocation" value="true"/&gt; &lt;constant name="struts.convention.action.mapallmatches" value="true"/&gt; 这两行请不要加在外边。&lt;struts&gt;“加在这里”&lt;/struts&gt;

    struts2的struts.properties配置文件详解

    10. struts.enable.DynamicMethodInvocation:这是一个布尔值,用于确定是否允许动态方法调用。如果设置为true,Struts2将允许动态方法调用。 11. struts.freemarker.manager.classname:这是一个FreemarkerManager...

    struts.properties配置详解

    struts.enable.DynamicMethodInvocation=true ``` - **struts.enable.SlashesInActionNames** - **描述**:是否允许在Action名称中使用斜杠。 - **示例**:允许在Action名称中使用斜杠。 - **配置**: ```...

    struts.properties详解

    - **struts.enable.DynamicMethodInvocation**:启用或禁用动态方法调用,默认为`true`。动态方法调用允许通过请求参数直接调用Action中的方法,增加了灵活性但也可能带来安全风险。 - **struts.enable....

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    struts.enable.DynamicMethodInvocation Allows one to disable dynamic method invocation from the URL 允许动态方法调用 struts.freemarker.manager.classname The org.apache.struts2.views.freemarker....

    struts.properties文件详解

    16. `struts.enable.DynamicMethodInvocation`: 开启或关闭动态方法调用,默认开启(`true`),关闭后只能通过 Action 名称来调用 Action 方法。 17. `struts.enable.SlashesInActionNames`: 控制是否允许在 Action...

    Struts2的常量详解

    struts.enable.DynamicMethodInvocation 属性设置 Struts 2 是否支持动态方法调用,该属性的默认值是 true。如果需要关闭动态方法调用,可以将该属性设置为 false。 这些常量都是 Struts2 框架的核心组件,它们控制...

    struts2的struts.properties介绍

    #### struts.enable.DynamicMethodInvocation **含义**:允许或禁止从URL中调用动态方法。 **示例**:如果设置为`true`,则允许动态方法调用;若为`false`,则禁止。 **应用场景**:在需要提高安全性的场景下,...

    struts.xml中constent属性参数配置大全

    **struts.enable.DynamicMethodInvocation** - **功能**:是否启用动态方法调用,默认为`true`。 - **示例**:设置为`false`,则关闭动态方法调用功能。 ##### 17. **struts.enable.SlashesInActionNames** - **...

    java eclipse

    #### 1.1 `struts.enable.DynamicMethodInvocation` 此配置项用于控制Struts是否启用动态方法调用(Dynamic Method Invocation,简称DMI)。DMI允许Struts框架在执行Action时通过字符串形式指定要调用的方法,从而...

    Struts2\constant应用

    &lt;constant name="struts.enable.DynamicMethodInvocation" value="false" /&gt; ``` **解释:** 关闭动态方法调用可以提高安全性,但可能会导致灵活性下降。 ##### 9. struts.enable.SlashesInActionNames **作用:** ...

    Struts2手动搭建所有的jar包及相应的struts.xml和web.xml

    &lt;constant name="struts.enable.DynamicMethodInvocation" value="false" /&gt; &lt;constant name="struts.devMode" value="true" /&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;!-- Action...

    struts2.pdf

    struts.enable.DynamicMethodInvocation=true struts.devMode=false ``` 上述配置分别启用了动态方法调用和关闭了开发模式。 ### 总结 Struts2框架因其高度的灵活性、易于集成的特性,在Java Web开发领域占据...

    struts.xml详细说明.doc

    &lt;constant name="struts.enable.DynamicMethodInvocation" value="false" /&gt; ``` 这会阻止Struts2尝试根据Action名称的部分内容来调用Action方法。 5. **模块化配置**: 为了提高代码的可维护性和可扩展性,...

    struts2的中文乱码问题解决

    struts.enable.DynamicMethodInvocation=true struts.i18n.reload=true struts.ui.theme=simple struts.locale=zh_CN struts.i18n.encoding=UTF-8 struts.serve.static.browserCache=false struts.url....

    Struts2.5版本struts.xml与web.xml配置的更改方法

    在上面的`struts.xml`配置中,`&lt;constant name="struts.enable.DynamicMethodInvocation" value="true"/&gt;`启用了动态方法调用。这意味着你可以通过URL直接调用Action的任何公开方法。同时,`&lt;constant name="struts....

    struts2开发遇到的问题

    如果启用了动态方法调用(`struts.enable.DynamicMethodInvocation = true`),可能会导致HTTP 404错误。解决方法是将标签改为 `&lt;s:form action=”sum”&gt;` 或 `&lt;s:form action=”sum!save”&gt;&lt;s:namespace=”your ...

    struts2属性文件中的有效的struts2属性KEY和带占位符的资源文件[参考].pdf

    16. `struts.enable.DynamicMethodInvocation`: 开启或关闭动态方法调用。默认启用,设为`false`可禁用。 17. `struts.enable.SlashesInActionNames`: 允许或禁止Action名称中使用斜线,默认不允许,设为`true`启用...

Global site tag (gtag.js) - Google Analytics