gpt4 book ai didi

java - Struts 1.x 和 Struts 2.x 的 URL 模式问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:32 25 4
gpt4 key购买 nike

我的一个项目正在 Struts 1.x 上运行,我们正在尝试在 Struts 2.x 上集成一些 URL 模式。很少有 URL 也以 Abc.do 结尾。

当前 web.xml 如下所示:

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

以上模式按照 web.xml 中的定义工作正常。

现在我们在 web.xml 中添加了支持 Struts 2.x 并行的功能。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

web.xml 中添加上述信息后,这些 URL 模式以 .action 结尾,它们在使用 struts 2.x 时也可以正常工作。

但是当我们想要添加一些也以 .do 结尾的特定 URL 模式映射到 Struts 2.x 时,如下所示。

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/Hello.do</url-pattern>
</filter-mapping>

我们希望所有以 Hello*.do 开头的请求都应该映射到 struts 2.x 上,但现在这还没有发生。

所以,web.xml 中缺少某些内容,或者总的来说,这是不可能的。

我们有什么办法可以解决这个问题吗?

最佳答案

首先,您应该定义 Struts2 过滤器并让它映射所有 URL,包括 /Hello*.do 模式和 *.action 模式。然后是映射 *.do 的 Struts 1 过滤器。 struts.xml 应配置为排除以 .do 结尾的模式(/Hello*.do 除外)。

struts.xml:

<constant name="struts.action.excludePattern" value="(?!/Hello.*).*\.do"/>
<constant name="struts.action.extension" value="action,do,,"/>

web.xml:

<!-- Struts2 configurations -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

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

<!-- Struts configurations -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

关于java - Struts 1.x 和 Struts 2.x 的 URL 模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25850234/

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