我正在使用 struts 2,我最近配置了我的web.xml
并struts.xml
更改.action
了 url 中的删除。很高兴除了一个主要问题外,一切都运行良好。我希望将我的一些请求转发到其他 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 并将接受的解决方案添加到代码中解决了问题。