考虑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;
global-error-page.jsp
因此,如果我尝试http://foo.com/bad.jsp或http://foo.com/bad.extTomcat将我重定向到global- error-page.jsp
http://foo.com/bad.jsp
http://foo.com/bad.ext
global- error-page.jsp
但是尝试http://foo.com/bad.action仍然会返回404错误,tomcat无法处理它,这是修复它的一种方法吗?
http://foo.com/bad.action
您可以使用 default-action-ref 来捕获所有不匹配的操作,如docs中所述:
通常,如果请求了操作,并且框架无法将请求映射到操作名称,则结果将是通常的“ 404-找不到页面”错误。但是,如果您希望综合动作处理任何不匹配的请求,则可以指定默认动作。如果没有其他动作匹配,则使用默认动作。 默认操作没有特殊要求。每个程序包可以有自己的默认操作,但是每个名称空间只能有一个默认操作。
通常,如果请求了操作,并且框架无法将请求映射到操作名称,则结果将是通常的“ 404-找不到页面”错误。但是,如果您希望综合动作处理任何不匹配的请求,则可以指定默认动作。如果没有其他动作匹配,则使用默认动作。
默认操作没有特殊要求。每个程序包可以有自己的默认操作,但是每个名称空间只能有一个默认操作。
只需将其结果映射到所需的页面即可:
<package...> <default-action-ref name="index" /> <action name="index"> <result>/WEB-INF/content/global-error-page.jsp</result> </action> </package>