Jsp Struts 2返回404,这不是由tomcat错误页面触发的

Jsp Struts 2返回404,这不是由tomcat错误页面触发的,jsp,tomcat,configuration,struts2,http-status-code-404,Jsp,Tomcat,Configuration,Struts2,Http Status Code 404,以Tomcat7.0.54上的Struts2WebApp为例 web.xml定义为: <error-page> <location>/WEB-INF/content/global-error-page.jsp</location> </error-page> /WEB-INF/content/global-error-page.jsp 此强制所有Tomcat错误(包括404)被重定向到全局错误页面.jsp 所以如果我尝试http://

以Tomcat7.0.54上的Struts2WebApp为例

web.xml定义为:

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

/WEB-INF/content/global-error-page.jsp
此强制所有Tomcat错误(包括404)被重定向到
全局错误页面.jsp

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


然而,
http://foo.com/bad.action
仍将返回404错误,tomcat无法处理,这是一种修复方法吗

您可以使用默认操作参考捕获所有不匹配的操作:

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

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

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


/WEB-INF/content/global-error-page.jsp

通过实现
未知句柄处理错误操作。您可以在
struts.xml
中使用标记对其进行配置

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

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

哪个servlet版本?可能是因为约定插件。
<global-results>
  <result name="error">/WEB-INF/content/global-error-page.jsp</result>
</global-results>