【问题标题】:Struts 2 returns 404 which is not triggered by tomcat error-pageStruts 2 返回 404 不是由 tomcat 错误页面触发的
【发布时间】:2016-06-03 12:09:30
【问题描述】:

考虑 Tomcat 7.0.54 上的 struts 2 webapp。

web.xml 定义为:

<error-page>
    <location>/WEB-INF/content/global-error-page.jsp</location>
</error-page>

这会强制所有 Tomcat错误(包括404)被重定向到global-error-page.jsp

所以如果我尝试http://foo.com/bad.jsphttp://foo.com/bad.ext Tomcat 会将我重定向到global-error-page.jsp

但是尝试http://foo.com/bad.action还是会返回404错误,tomcat无法处理,有办法解决吗?!

【问题讨论】:

  • 哪个 servlet 版本?也许是因为约定插件。

标签: jsp tomcat configuration struts2 http-status-code-404


【解决方案1】:

您可以使用 default-action-ref 来捕获所有不匹配的操作 as described in the docs:

通常,如果请求了一个动作,而框架无法将请求映射到动作名称,则结果将是通常的“404 - 找不到页面”错误。但是,如果您希望综合操作处理任何不匹配的请求,您可以指定默认操作。如果没有其他操作匹配,则使用默认操作。

默认操作没有特殊要求。每个包都可以有自己的默认操作,但每个命名空间应该只有一个默认操作。

只需将其结果映射到您想要的页面:

<package...>

    <default-action-ref name="index" />
    
    <action name="index">
        <result>/WEB-INF/content/global-error-page.jsp</result>
    </action>

</package>

【讨论】:

    【解决方案2】:

    通过实现UnknownHandler 处理不良操作。您可以在struts.xml 中使用标签进行配置。

    <bean type="com.opensymphony.xwork2.UnknownHandler" name="myhandler" class="org.struts.YourUnknownHandler"/>
    

    org.struts.YourUnknownHandler 类应该实现UknownHandler 接口来处理这些情况:

    • 动作配置未知时
    • 找不到操作和结果代码的结果时
    • 找不到操作方法时

    Struts 2 也可以配置为处理未知的操作或结果,即使没有default-action-ref 标签,它也提供了处理此类请求的配置。通常,您可以通过 Struts2 xml 配置和引用处理程序使用 unknown-handler-stack 标记。您应该检查是否提供了 com.opensymphony.xwork2.UnknownHandler。如果您使用的是约定插件,它默认提供 convention 未知处理程序,它可能会处理您的操作或结果。

    阅读How to implement your unknown handler

    方法handleUnknownAction() 应该返回ActionConfig。这个配置你应该自己构建,你可以使用ActionConfig.Builder。您也可以单独构建结果,但如果您有全局结果

    <global-results>
      <result name="error">/WEB-INF/content/global-error-page.jsp</result>
    </global-results>
    

    您可以在运行时配置中找到它并添加到新烘焙的操作配置中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 2010-09-07
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多