gpt4 book ai didi

java - Struts2 Action 映射问题

转载 作者:行者123 更新时间:2023-12-02 05:27:00 25 4
gpt4 key购买 nike

大家好,

这并不是真正的问题,但我想知道如何限制以下行为。

我在我的 stuts.xml 文件中设置了此设置。

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

<package name="default" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>

<action name="blue">
<result name="success" type="tiles">/blue.tiles</result>
</action>

<action name="yellow">
<result name="success" type="tiles">/yellow.tiles</result>
</action>

<action name="red">
<result name="success" type="tiles">/red.tiles</result>
</action>
</package>
</struts>

现在令我困扰的是,这些操作可以像这样访问:

http://localhost:port/blue
http://localhost:port/yellow
http://localhost:port/red

但您也可以像这样访问它们..

http://localhost:port/yellow/blue/
http://localhost:port/red/blue/yellow

所以ti会触发“/”后面提到的所有操作。

我想防止这种情况发生,所以我想知道是否有什么方法可以限制它?

提前致谢,亚历克斯

最佳答案

web.xml 中,您可能有一个类似这样的 struts 操作映射条目

<servlet-mapping>
<servlet-name>struts2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

根据servlet规范以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射

所以如果你想给出绝对url映射,那么你必须像下面这样指定它们

<servlet-mapping>
<servlet-name>struts2</servlet-name>
<url-pattern>/blue</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>struts2</servlet-name>
<url-pattern>/yellow</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>struts2</servlet-name>
<url-pattern>/red</url-pattern>
</servlet-mapping>

如果您使用的是 struts 2.1.7 或更高版本,那么您可以添加如下所示的排除模式

<constant name="struts.action.excludePattern" value="/([a-zA-Z0-9]+)/.*"/>

关于java - Struts2 Action 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25912457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com