struts2 DMI无法运行

初学struts,在学习动态方法调用的时候,写的链接为<a href="user/user!list">添加学生</a>

但是在点击链接时,出现下面这样的错误提示信息:

There is no Action mapped for namespace [/user] and action name [user!add] associated with context path [/Struts2_050_ActionMethod]

查了文档才知道,原来struts2出于两方面的考虑,对DMI可以选择enable和disable:1)DMI可能导致安全问题;2)DMI与通配符方法功能有重叠。

但是默认情况下,DMI是enable的。

仔细看了下我的配置文件,发现原来拷贝其他文件时,多拷贝了这么一句话

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

这句话就将DMI设置成了disable了。

删除这句话,或者把value改成“true”,就能得到正常想要的结果了。

在struts.xml中添加

<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 
打开动态方法调用。
动态方法调用官方推荐的做法是,使用通配符的形式。不要使用actionName!methodName
的方式。

struts2之前的版本动态方法调用默认是打开的,没想到2.3.15默认是关闭的

时间: 2024-12-14 05:36:39

struts2 DMI无法运行的相关文章

struts2 DMI

在使用DMI(动态方法调用)的时候要注意struts.xml配置时要把 ? 1 <constant name="struts.enable.DynamicMethodInvocation" value="true"/> 不然会出现错误 完整示例代码 struts.xml <constant name="struts.devMode" value="true" /> <constant name=&

Struts2.1的运行流程的简单分析(个人见解)

Struts2.1的运行流程大致分为以下几个步骤: 1.用户输入URL请求,该请求被StrutsPrepareAndExecuteFilter拦截,根据welcome-file属性的设置跳转到相应的jsp页面. 2.用户在jsp页面发出的相应的处理请求. 3.该处理请求也会被StrutsPrepareAndExecuteFilter拦截,首先清理当前线程的ActionContext和Dispatcher防止内存的泄露,接下来询问ActionMapper(Action映射器)来决 定这个请求是否需

Struts2系统结构及运行原理

架构图 下边是一张Struts2的官方文档中的Struts2的构架图 各模块的简要分析 (1)橙色是Servlet Filters,过滤连,所有的请求都要经过Filter的处理: (2)浅蓝色是Struts Core,是Struts的核心部分,Struts2中已经做好的功能,在实际的开发中不需要动他们: (3)浅绿色是Interceptor,Struts2的拦截器.Struts2提供了很多默认的拦截器,时刻完成日常开发中的绝大部分工作,当然,也可以自定义拦截器,来实现具体的功能: (4)浅黄色的

Struts2的运行原理和运行与原理

Struts2 struts2的流程图 运行机制 1.客户端发送请求.通过ActionContextCleanUp调用FilterDispatcher(struts) 2.FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action 3.如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 4.ActionProxy根据ActionMapping和ConfigurationMa

Struts2系统运行流程(2)

在上一篇中已经说过了Struts2的系统的基本原理(http://blog.csdn.net/xlgen157387/article/details/45840719),下边说一下Struts2的运行流程: 举个简单的案例,就是一个helloworld的案例,下边对其进行进行详细的解释. 案例基础内容: 我们在使用Struts2的时候会在web.xml文件中进行配置过滤器:编写一个Action类,这里起个名字叫做HelloWorldAction:在struts.xml中进行配置这个Action.

struts2请求过程源码分析

Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-src.zip,将其解压即可.里面的目录页文件非常的多,我们只需要定位到struts-2.3.15.1\src\core

Struts2中 Result类型配置详解(转)

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示:public interface Action{    public static final String SUCCESS =

Struts2学习第一天——struts2基本流程与配置

struts2框架 什么是框架,框架有什么用? 框架 是 实现部分功能的代码 (半成品),使用框架简化企业级软件开发 ,提高开发效率. 学习框架 ,清楚的知道框架能做什么? 还有哪些工作需要自己编码实现 ? 什么是struts2框架,它有什么用? Struts 2是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心 struts2=struts1+

Struts2中 Result类型配置详解

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示: public interface Action {     public static final String SUCCES