Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java /设置Struts2 devMode=false后,struts/webconsole.html仍在工作_Java_Struts2_Appfuse - Fatal编程技术网

Java /设置Struts2 devMode=false后,struts/webconsole.html仍在工作

Java /设置Struts2 devMode=false后,struts/webconsole.html仍在工作,java,struts2,appfuse,Java,Struts2,Appfuse,我在struts.xml中设置了以下配置参数: 在struts.properties:struts.devMode=false 仍然在加载webconsole.html页面。如何解决此问题?devMode属性与webconsole无关,它只执行以下操作: 启用后,Struts 2将在每次请求时重新加载资源包(这意味着您可以更改.properties文件,保存它们,并查看下一个请求中反映的更改) 它还将在每次请求时重新加载xml配置文件(struts.xml)、验证文件等。这对于测试或微调配

我在
struts.xml
中设置了以下配置参数:


struts.properties
struts.devMode=false


仍然在加载
webconsole.html
页面。如何解决此问题?

devMode属性与
webconsole
无关,它只执行以下操作:

  • 启用后,Struts 2将在每次请求时重新加载资源包(这意味着您可以更改
    .properties
    文件,保存它们,并查看下一个请求中反映的更改)
  • 它还将在每次请求时重新加载xml配置文件(
    struts.xml
    )、验证文件等。这对于测试或微调配置非常有用,无需每次重新部署应用程序
  • 第三,可能是不太广为人知的设置,因此会引起很多混乱:它会将调试级别或通常可忽略的问题提升为错误。例如:当您提交一个不能在动作
    “someUnknownField”
    上设置的字段时,它通常会被忽略。但是,当您处于开发模式时,将抛出一个异常,告诉您提交了一个无效字段。这对于调试或测试大型表单非常有用,但如果您依赖于请求中未在操作上设置但直接在视图层中使用的参数,则可能会造成混淆(警告:错误做法,您应该始终验证来自web的输入)
我假设你是从美国来的,我的建议是:你不应该这样做
甚至可以在生产机器上部署此组件。

只需在
标记中写入以下行即可

<constant name="struts.action.excludePattern" value="/struts/webconsole.html" />

即使您将
devMode
参数设置为false,即使调试侦听器根本不在侦听器包中,也会显示
webconsole.html

显示struts 2
webconsole.html
,因为struts将其作为静态资源加载。请查看
DefaultStaticContentLoader

通过检查加载的
webconsole.html
我发现它不会工作,即使您尝试通过一些JavaScript更改来修复它,如果struts不在devMod中,
DebuggingInterceptor
也不会接受来自此页面的任何数据

@RajeevRanjan很好用。只需添加:

<constant name="struts.action.excludePattern" value="/struts/webconsole.html"/>

如果不想访问任何内容,则必须添加此拦截器使用的css和js

<constant name="struts.action.excludePattern" value="/struts/webconsole.css"/>
<constant name="struts.action.excludePattern" value="/struts/webconsole.js"/>


我认为这应该/可以解决,请参阅。

当我们将dev mode设置为false时,客户端无法通过webconsole.html注入任何东西。顺便说一下,这个webconsole.html页面仍然存在,因此我们可以通过在web.xml中设置安全约束来隐藏它们,以避免访问此文件

<security-constraint>
  <web-resource-collection>
    <web-resource-name>OGNLconsole</web-resource-name>
    <url-pattern>*/struts/webconsole.*</url-pattern>
  </web-resource-collection>
</security-constraint>

OGNL控制台
*/struts/webconsole*

问题解决了吗?从struts2的2.3.31或2.5.5开始,只有在设置了devMode时,网络控制台才可见:issues.apache.org/jira/browse/WW-4601从struts2的2.3.31或2.5.5开始,只有在设置了devMode时,网络控制台才可见: