gpt4 book ai didi

java - URL 重写后所有操作都转发到 Struts2 servlet

转载 作者:行者123 更新时间:2023-12-01 14:25:18 26 4
gpt4 key购买 nike

我正在使用 struts 2,并且最近配置了 web.xmlstruts.xml 来更改 url 中的消除 .action 。令人高兴的是,除了一个重大问题之外,一切都运行良好。我希望将我的一些请求转发到其他 servlet,但以下代码可确保我的每个操作都重定向到 Struts2 servlet。

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

我想将我的 "/do/*" 转发到另一个 servlet,比如 xyz 那么有人可以帮助我该怎么做。我有一个想法,我可能必须使用正则表达式,但我尝试了很多模式但失败了。我已经尝试了我认为应该匹配的最佳正则表达式:

[^(\/do\/*)]

<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>

</filter-mapping>



<servlet>
<servlet-name>xyzServlet</servlet-name>
<servlet-class>com.blah.xyzServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xyzServlet</servlet-name>
<url-pattern>/do/guide</url-pattern>

同样,我有很多这样的 servlet,它们都有自己的用途。 url 模式对它们来说几乎相同...它们就像/do/abc 或/do/pqr 等。

编辑:通过使用 StrutsPrepareAndExecuteFilter 并将接受的解决方案添加到代码中来解决问题。

最佳答案

在排除模式中配置您的 URL,如下所示在 struts.xml 中。并在 web.xml 中添加/do/* 的 servlet 映射。

<constant name="struts.action.excludePattern" value="/do/.*" />

关于java - URL 重写后所有操作都转发到 Struts2 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17205556/

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