【问题标题】:web.xml filter-mapping not forwarding to strutsweb.xml 过滤器映射不转发到 struts
【发布时间】:2010-12-19 19:20:26
【问题描述】:

我正在尝试做一些微不足道的事情,但看不到我缺少什么。我有以下 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 等中正确配置了“gallery”)。

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

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

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

【问题讨论】:

  • struts.xml 是否配置为知道如何处理gallery.do?也许过滤器转发工作正常,但 Struts 配置错误。
  • struts.xml 被配置为处理动作名称“gallery”......但对扩展名.action(或.do)一无所知。据我了解,struts 只是简单地敲掉扩展以获得动作名称。
  • 另外,如果我输入一个无效的动作名称,struts 会执行大量日志记录...如果我输入 gallery.do 我在 struts 日志中绝对没有任何活动,所以我认为假设它是安全的没有得到它。
  • 将所有其他过滤器映射替换为以下... struts2/* gallery.action 仍然有效...但 gallery.do 或 gallery.blah 仍然无效。

标签: java tomcat struts2 web.xml


【解决方案1】:

那是因为您确实有一个用于 *.action 的 &lt;servlet-mapping&gt;,但没有用于 *.do 的 &lt;servlet-mapping&gt;

【讨论】:

  • 我没有 *.action 或 *.do 的 servlet 映射 ...我正在检查 web.xml 和服务器默认 web.xml 文件。
  • 我明白了。查看 [struts2] 标签
【解决方案2】:

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

struts.action.extension=action,do,etc

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2017-10-01
    • 2013-08-02
    • 2019-05-19
    • 2012-04-26
    • 2013-01-20
    相关资源
    最近更新 更多