2

我正在尝试做一些微不足道的事情,但看不到我错过了什么。我有以下 web.xml ......

<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>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
</filter-mapping>

当我使用“ http://localhost:8080/gallery.action ”之类的 URL 时,一切正常(因为“画廊”在 struts.xml 等中配置正确)。

但是,如果我点击“ http://localhost:8080/gallery.do ” - 我会收到 404 响应。Tomcat 似乎没有将请求转发给 struts,因为 struts 端没有日志记录。Tomcat 日志只显示 404。

我尝试将过滤器映射更改为 *.blah,但除了 *.action 之外没有任何效果。我在默认的 web.xml 文件中看不到任何冲突的信息。

有人知道我错过了什么吗?

4

2 回答 2

2

显然 Struts2 默认只识别 .action 扩展名,需要使用 struts.properties 文件根据需要配置其他扩展名:

struts.action.extension=动作、做等

这是非常具有误导性的,因为大多数文档都讨论了如何专门使用过滤器映射来转发到 struts。

于 2009-11-24T09:02:16.083 回答
-1

那是因为您确实有<servlet-mapping>for *.action,但没有<servlet-mapping>for *.do

于 2009-11-24T08:30:56.757 回答