Struts 2 - 使用任何URL处理的映射操作

A. *_*ano 5 java url web.xml struts2 struts-action

我正在使用Struts2创建一个Web应用程序,我遇到了与任何URL一起使用的映射操作的问题.

在我的struts.xml文件中,我已经配置了一个名为"/ registration"的包,其中包含一些操作,主要是"register".我的应用程序的上下文根是"app/test".

要访问注册表单,我可以转到"localhost:8080/app/test/registration/register.action"并加载我的表单并且效果很好.

但是,如果在命名空间后面的URL中添加了任何内容,例如"localhost:8080/app/test/registration/arbitrary/text/here/register.action",表单仍会加载.

我想防止这种情况发生,因此您只能访问表单正确的URL.我在struts.xml和web.xml中尝试了许多不同的配置选项但无济于事,我无法在网上轻松找到有关此问题的知识.

任何帮助将不胜感激,谢谢!

在struts.xml

<struts>
    <package name="myPackage" namespace="/registration" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
        </result-types>
        <action name="register" class="edu.uconn.test.action.RegistrationAction" method="input">
            <result name="input" type="tiles">/register.tiles</result>
        </action>
    </package>
</struts>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 7

struts.mapper.alwaysSelectFullNamespace常量设置为true:

<constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />
Run Code Online (Sandbox Code Playgroud)

当利用S2对URL中任意参数的支持(例如,通配符,正则表达式模式匹配)时,这可能会产生意想不到的后果.