struts2彻底捕获404错误的方法

目前在作一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat。但愿用户在IE地址栏乱敲的时候,所敲入的全部未定义的URL都能被程序捕捉到,而后转到一个自制的404错误处理页面。html

首先查阅网上的资料,得知能够在web.xml中加入这么一段:web

<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>spring

这样,因此未找到的404错误都会转到/error/404.jsp接受处理。tomcat

可是通过试验,我发现以.action结尾的URL会先被struts2框架所捕获,而不会直接转入web.xml中配置的处理页面。这样,若是在struts.xml没有配置相应的action,则会在tomcat里输出错误:服务器

严重: Could not find action or result
There is no Action mapped for namespace / and action name ******. - [unknown location]网络

虽然最后也能转入web.xml中配置的处理页面,可是这样在命令台瞎输出一些东西,很是不便于程序的管理和调试,因此还得想办法让struts2框架处理未定义的action。app

查阅网上资料,发现能够在struts.xml中,添加一个默认的package,而后在这个默认的package中,添加一个默认的action,让这个action转向404错误处理页面:框架

<package name="default" extends="struts-default">
<default-action-ref name="notFound" />
<action name="notFound">
<result>/error/404.jsp</result>
</action>
</package>jsp

默认的package的特色就在于不定义namespace属性,这样全部未定义的namespace都会转向这里。name="default"是为了便于阅读,其实name是什么均可以,也能够为空:name=""。spa

而后还要在其它已定义的package中也添加默认的action,转向404错误处理页面。这样就能够彻底处理全部的404错误了。

转自:http://www.cnblogs.com/coolhwm/archive/2011/11/19/2255504.html

相关文章
相关标签/搜索