在struts2.5版本中使用DMI遇到问题

用struts2.5版本,试了很久,一直报This method: add for action user1 is not allowed!
url:http://localhost:8888/struts2_0200_namespace/user/user1!add.action

struts.xml

  <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="user" extends="struts-default" namespace="/user">

        <action name="userAdd" class="struts2_0200_namespace.IndexAction" method="add">
            <result>/hello.jsp</result>
        </action>

        <action name="user1" class="struts2_0200_namespace.IndexAction">
            <result>/hello.jsp</result>

        </action>
    </package>
</struts>

IndexAction.java

 package struts2_0200_namespace;
import com.opensymphony.xwork2.ActionSupport;

public class IndexAction extends ActionSupport {


      public String add(){

          return "success";
      }


}   

hello.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>        
    <title>My JSP 'hello.jsp' starting page</title>       
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">  
  </head>  

  <body>  
    hello <br>  

  </body>  
</html> 

错误信息

Struts Problem Report

Struts has detected an unhandled exception:

Messages: •This method: add for action user1 is not allowed!

Stacktraces

This method: add for action user1 is not allowed! - [unknown location]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:200)
org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:113)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:
struts.devMode=false

in your WEB-INF/classes/struts.properties file.

0

5个回答

这是因为 struts2.5 为了提升安全性,添加了 allomethod 这么个玩意。

解决方法是在配置文件中添加:


   <package name="exam" extends="json-default">

        <global-allowed-methods>regex:.*</global-allowed-methods>

    <action name="user" class="userAction">
            ...
    </action>

    </package>

或者,针对action,在 action 块中添加

<allowed-methods>regex:.*</allowed-methods>

同样也支持在你的 action 上使用 @AllowedMethods 注解
默认的设置为

<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>

全局设置是增量而不是覆盖的,支持正则和直接匹配方法,
源码在这两段

// com.opensymphony.xwork2.DefaultActionProxy#prepare
// com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod

老项目因为爆出漏洞然后我找了一下午这个问题,最终打开研发模式,并搜索官网文档解决。
struts 真是个坑啊。

6

user1 没有method action里的方法吧

0
skyzhang92
skyzhang92 http://localhost8888/struts2_0200_namespace/user/user1!add.action我是动态调用IndexAction这个类里面的add方法,所以action里没有添加method属性,但是他就报错了。
大约 3 年之前 回复

图片说明
纯属补充楼上的说明,debug出来的默认允许的allowedMethods范围
allowedMethods=[LiteralAllowedMethod{allowedMethod='index'}, LiteralAllowedMethod{allowedMethod='input'}, LiteralAllowedMethod{allowedMethod='execute'}, LiteralAllowedMethod{allowedMethod='save'}, LiteralAllowedMethod{allowedMethod='browse'}, LiteralAllowedMethod{allowedMethod='delete'}, LiteralAllowedMethod{allowedMethod='back'}, LiteralAllowedMethod{allowedMethod='list'}, LiteralAllowedMethod{allowedMethod='cancel'}]

0

图片说明

0
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
升级Struts2.5后使用DMI动态方法调用遇到问题
转自:http://www.lvhongqiang.com/blog429.html问题:升级Struts2.5后使用DMI动态方法调用报错,method 找不到。源码:struts.xml <action name="json_*_*" class="{1}Action" method="{2}"> <result name="success" type="j
struts2.5 DMI方式调用问题
闲来无事,研究一下ssh的框架整合。 花了半天时间下载好了SSH的jar包(spring4.3.5),(hibernate5.2.1),(struts2.5.8),一路下来,都没问题,但是唯独在struts的动态调用。 配置文件如下: 死都出不来,瓜皮报错如下!! 说是在这个person的命名空间下找不到映射地址,找了两天,一个个翻文档,struts2的官方文档也没找到了(
Struts2.5的DMI(动态方法调用)与新增的SMI
在使用Struts2.5之后的版本,在DMI(动态方法调用)上,有与之前的版本发生一些改变 在DMI使用时,是默认被禁用的,导致通配符 * 无法正常使用 Apache Struts项目的官方解释如下: 从Struts2.3开始,我们增加了一个开关来控制DMI,我们这样做基于两个原因: 1. 如果Action的实现是纯POJO方式(既不继承自ActionSupport也不实现Action接口...
使用struts2.5版本遇到的问题
我的环境         Eclipse JavaEE |1.8JDK |Tomcat8.0| 动态web项目3.1| struts2.5.2     struts相关包         我使用的是struts2.5.2版本,是目前的最新版本。需要的核心包如下:         其实包是看你自己需要,比如struts2-convention-plugin-2.5.2.jar包是用来使用
Struts2.5版本简单示例
Struts2.5版本的简单示例,2.5版本与之前版本写法不同,上传此代码供参考
求助 struts2.5版本的初始配置
[img=https://img-bbs.csdn.net/upload/201707/29/1501340897_345589.png][/img][img=https://img-bbs.csdn.net/upload/201707/29/1501340907_23403.png][/img][img=https://img-bbs.csdn.net/upload/201707/29/1501340915_266326.png][/img][img=https://img-bbs.csdn.net/upload/201707/29/1501340921_481063.png][/img]
关于struts2.5 动态方法调用(DMI)出现错误的解决办法
1. 先上代码 代码结构图如下 2. 展示代码 WEB-INF/web.xml &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &amp;lt;web-app xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot; ...
Struts2.5版本以上的struts.xml配置
由于Struts2的版本在不断的更新,对文件的配置要求也有了一些改变。 对于Struts2.5以上的版本如果需要url+!+方法访问Action某个方法的话需要在struts.xml加入如下语句 [html] view plain copy constant name="struts.enable.DynamicMethodInvocati
struts2.5之通配符使用报错
在package标签之间添加&lt;global-allowed-methods&gt;regex:.*&lt;/global-allowed-methods&gt;即可 实例:view plaincopy &lt;packagename="default"namespace="/"extends="struts-default"&gt; &lt;globa...
struts2.5通配符使用异常
使用如下方式配置struts.xml文件时,报错 /{1}_{2}_success.jsp 报错如下: Struts Problem Report Struts has detected an unhandled exception: Messages: There is no Action mapped for na
dmi工具 dmi修改
dmi工具 修改BIOS中dmi的信息的工具
dmi
请各位大侠帮忙,谁知道用于DMI 的API 函数
Struts2 DMI的使用问题
最近在学习Struts2框架,在学到DMI那部分时自己敲代码总是不成功rnrnrnrnrn rn rn /model/success.jsprn rnrnrn<!--Action-->rnprivate User user;rn rn public User getUser() rn return user;rn rnrn public void setUser(User user) rn this.user = user;rn rnrn public String add()rn System.out.println("name="+user.getUsername());rn System.out.println("password="+user.getPassword());rn return SUCCESS;rn rnrn public String execute()rn rn return ERROR;rn rnrnrnrn<%String path=request.getContextPath(); %>rnrn rn 添加用户rn rnrnrn以上是我的配置文件和JSP页面代码,试了很多次,总是报错说user!add不存在,本人菜鸟,求高手指点,万分感谢
struts2.5版本配置核心filter之后启动报错
Struts2.5版本在web.xml配置完核心filter之后启动Tomcat会报错误:&quot;SEVERE:Exception starting filter Struts java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&quot;意思是找不到核心fi...
struts2.5使用注释常见的问题
1.使用注释需要导入包:struts2-convention-plugin-2.5.10.1.jar 2.必须启动DMI: constant name="struts.enable.DynamicMethodInvocation" value="false" /> 3.必须配置允许的方法:@AllowedMethods @AllowedMethods("test") 在这里还没
IDEA 使用中遇到问题
目录 快捷键 功能设置       添加 Tomcat 配置          添加 maven 项目后 对应的 maven project 没有正确显示 IDEA 初始化设置      字体编码设置          智能提示修改          自动引包 忽略不需要添加的文件   快捷键 大小写切换  Ctrl + shift + U 查看继承类  Ctrl + A...
elementui使用中遇到问题
vue项目elementUI中el-tree组件修改图标的方法 vue项目elementui中uploade 上传的文件附带其他数据当文件未改变时附加数据单独上传 elementui中的el-form的重置resetFields不起作用 elementui中el-table根据返回数据范围的不同显示不同字体颜色
resin使用中遇到问题
我用的是MyEclipse6.5 集成resin3后报错 rnSpecification version 1.5 of package javax.management, Java Platform API Specification, version 1.5 is not compatible with Resin 3.0.8. Resin 3.0.8 requires version 1.2. rn请教下是个啥意思
Struts2中使用DMI(动态方法调用)
Struts2中使用DMI(动态方法调用) Action执行的时候并不一定要执行execute方法, 可以在配置文件中配置Action的时候用method=来指定执行哪个方法------会产生太多的action,不推荐用, 也可以在url地址中动态指定(动态方法调用-DMI)------推荐 1.配置Action (method方式) url为:http://localh
Struts2.5环境搭建
(1)ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,在web.xml中配置正确过滤器类<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>这是2.5以上版本的StrutsPrepareAndExecuteFilter类所在的包。 (2)Tomcat无法启动,
Struts2.5 通配符不能使用问题
今天在上机时,登录和注册使用通配符在 Struts 2 的低版本好用,但是回到宿舍后使用最新的 2.5.10 版本就不可以用了。 <action name="*Action" class="com.guofeng.action.UserAction" method="{1}"> <result name="success">{1}_success.jsp</result>
struts2 案例代码实现及遇到的问题【struts2.5版本】
实例struts2.5版本遇到的坑 问题一:Eclipse配置Struts2问题:ClassNotFoundException: org...dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 问题二:使用struts2.5,Tomcat无法正常启动,抛出“A child Container failed during start”或者“ java.lang.ClassNotFoundException: org.apache.logging.log4j.L
Struts2.5版本之后Tomcat启动报错问题
初次学习Struts2,本着学习最新版本知识的原则,使用了Struts2.5.5版本。使用2.1版本没有问题,但是2.5版本果然会报错,完全靠自学。。。我真是解决两个小时啊!对新手来说上手坑真的比较多。。。 1.导入lib,我们只需要导入一些最小依赖包,下面列出的是我导入的 commons-fileupload-1.3.2.jar commons-io-2.4.jar commons-la
struts2.5 从老版本升级到2.5版本
struts2.3之后的版本,配置上以及包都有些改动,我是从2.0.9版本升级到2.5版本,遇到了不少坑,下面记录一下升级过程。 首先,升级到版本需要修改的配置文件主要有一下文件: 1. web.xml http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.x
struts2.5的配置
编程工具:eclipse。 1.web.xml的配置 在web工程的web.xml中配置如下: &amp;lt;web-app id=&quot;MyStrutsApp&quot; version=&quot;2.4&quot; xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:s...
struts2.5软件开发包
该压缩包为struts2.5版本的软件开发包,内含struts2.5开发的最基本lib包
struts2.5必须
struts2.5必须,运行至少的
struts2.5环境搭建
struts2.5搭建步骤 1.下载导入jar 2.配置web.xml文件 &amp;amp;amp;amp;lt;filter&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;filter-name&amp;amp;amp;amp;gt;struts&amp;amp;amp;amp;lt;/filter-name&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;filter-class&amp;amp;amp;am
DMI怎么了?
我用AIDA32检测计算机时 发现一个警告 不能保证DMI数据的正确性rn请问这是什么东东啊?
在母版中使用Jquery遇到问题
假设我想在母版页中控制两个Div的显隐,代码如下:rn rn这两个div是放在Master页里面的,如果把上面这段JS代码同样加在Master页里面,执行就会失败。但如果把这段代码写在子页面的Content里面,哪怕这个子页的Content里只有这段JS,却可以正常控制Master页里面的这两个Div显隐……我也试过同时在Master页和子页里面都写这段代码,然后翻看IE的源代码,是一模一样的,但仍然是写在子页里的才能生效。难道在母版页面里面使用Jquery会失效?rn我认为不涉及ID的问题,因为既然能在子页面里面成功让母版页面里面的DIV执行,就证明能找得到ID。而且这个不是Server控件,ID不会被更改的。同理应该也不是调用的Jquery库的路径问题吧?
SpringBoot中使用swagger2遇到问题
springfox-swagger 使用的是2.2.2nspring-boot-starter-parent 使用的是1.5.3n发现一个很奇怪的问题 集成进来之后nn端口在8080情况和没有过滤器的情况是好使正常的n![图片说明](https://img-ask.csdn.net/upload/201712/05/1512478741_715450.png)nn只要我修改端口为其他的 或者写了个过滤器就不行会出现找不到接口,删除过滤器及把端口修改为8080又能正常显示n
ASP中使用SQL-DMO遇到问题.
我用VB做了ActiveX Dll,其中调用SQL-DMO查找局域网内的SQL Server服务器.在VB的工程里使用该组件一切正常,但在ASP中使用发生错误:Error:-2147024882[SQL-DMO]存储器不足,无法完成此操作。有人遇到这种问题么?
在web中使用多线程的遇到问题
public void ss_Thread()rn rn new Thread(new ThreadStart(ss)).Start();rn rn protected void ss()rn rn lblTest.Text = "123";rn rnrn protected void Button1_Click1(object sender, EventArgs e)rn rn ss_Thread();rn OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString);rn conn.Open();rn OleDbCommand cmd = conn.CreateCommand();rn cmd.CommandText = "INSERT INTO [time](code,isOver, msg, username, startTime, endTime)VALUES ";rn cmd.CommandText += "('123',0, '321', 'aaa','" + DateTime.Now + "','" + DateTime.Now + "')";rn for (int i = 0; i < 5000; i++)rn cmd.ExecuteNonQuery();rn lblTest.Text = "321";rn conn.Close();rn rnrnrn我想实现点击按钮之后 lblTest马上变成123,同时执行数据库操作,操作结束后再把lblTest的值改了
jna在tomcat中使用遇到问题
我一个项目中需要使用jna的方式通过c++链接PI数据库。 但是项目在tomcat中启动后,数据量大,频率高的时候,tomcat就是直接停止,毫无征兆。 后来感觉原因是,tomcat中间件处理动态链接库的方法内存时,不够严密。JVM号称是内存出一点纰漏就会宕机的。 好来单独写一个java程序,通过thrift远程调用,再也没宕机过。 但是thrift的内存处理,和纯java程序执行
CGI中使用双缓冲遇到问题
关于Invalidate的使用 刚学C#rn函数好像是指定某一区域无效,可我用下面代码 鼠标拖动会闪烁 这是为什么?rn为什么我重绘改变的区域 会一直闪 而重绘非常小的一块 却看起来正常呢rnMFC的Invalidate BOOL参数是指定是否先用背景填充区域 False直接覆盖 而C#没有?! 跟这有关吗?rn项目里 我测出是对话框背景先重绘了次 这是为什么呢?rn新手求解 OTLrnrn[code=csharp]rnRectangle rc;rn public Form1()rn rn InitializeComponent();rn rc = new Rectangle(5, 5, 0, 0);rn rnrn private void Form1_Paint(object sender, PaintEventArgs e)rn rn BufferedGraphicsContext current = BufferedGraphicsManager.Current;rn BufferedGraphics bg;rnrn bg = current.Allocate(this.CreateGraphics(), this.DisplayRectangle);rn Graphics g = bg.Graphics;rnrn g.Clear(Color.LightGray);rnrn Brush mybush = new SolidBrush(Color.Black);rn g.FillRectangle(mybush, new Rectangle(0, 0, 400, 400));rnrn Brush mybush2 = new SolidBrush(Color.Red);rn g.FillRectangle(mybush2, rc); rnrn bg.Render();rn g.Dispose();rn rnrn private void Form1_MouseMove(object sender, MouseEventArgs e)rn rn rc.Width = e.X;rn rc.Height = e.Y;rn this.Invalidate(rc,true);rn //this.Invalidate(new Rectangle(0, 0, 5, 5), true); //上面换成这行效果还好rn rn[/code]
shadowsocks-qt5使用中遇到问题总结
一。安装 通过PPA源安装,仅支持Ubuntu 14.04或更高版本。 sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt-get update sudo apt-get install shadowsocks-qt5 二。连接某节点,xxx无法启动。 端口被占用了。查看被哪些监听netstat -nlp | grep 1080
在reportingService中使用动态sql遇到问题
declare @p nvarchar(100)rndeclare @y nvarchar(10)rndeclare @s nvarchar(10)rnset @p=@pirnset @y=@yearrnset @s=@seasonrnexec('rnselect nvarchar5,nvarchar6rnFROM UserData where tp_listid=''6EB8CD01-9029-4076-845E-D457A22CBC43''and nvarchar3= ' +@y+ ' and nvarchar4= ' +@s+ ' rnorder by ' +@p+ 'rn')rnrn@pi、@year、@season是报表参数,都是string型的。rn以上句子提示错误 不允许数据类型sql_variant到nvarchar的隐式转换rn帮忙看下要怎么改
vb中使用dictionary遇到问题
dim dicObj as Dictionaryrndim objData as myClassrnset dicobj = new Dictionaryrnset objdata as myClassrnrnobjdata.strFile="ppp"rndicobj.add "uu",objdatarnrn执行后 用调试器看dicobj的内容。里面的 Item项只有"uu",没有objdata成员。rn使用 dicobj.exist("uu")返回 true 使用 dicobj.Key("uu")出错。 请高手解答 我怎么才能把对象装载到dicobj中。
C#中使用uploadify遇到问题
本人C#菜鸟一只,今天写到上传的时候,用这个uploadify控件遇到一个问题,就是页面在加载结束后(页面不在刷新了),发现程序会再次进入到当前页面的action中。我断点测试半天,发现只有用这个控件就会在页面加载结束后再次进入当前页面的的action中,并且不传入任何值。。然后一些需要用到传入值的时候,就会报错。这是什么原因。求解。。。。。。。。。。。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/1.gif][/img]
vs2013使用中遇到问题求助。
最近升级了2013版使用中出现两两个问题,第一个是:每次打开项目都会提示未能正确加载可能是某个扩展出现错误请查阅ActivityLog.xml。我菜鸟一个看不懂,百度也找不到资料他倒不是很影响使用也就没管他。第二个就是很头痛了2013的单元测试要下扩展。我下载下来重启vs 右键也有那个标致但是就是没反应啊。怎么点都没反映。实在没办法了来这里求助啊!!!!