Struts2的异常处理机制
2015-08-19 11:19
316 查看
目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat。希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的404错误处理页面。
首先查阅网上的资料,得知可以在web.xml中加入这么一段:
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
这样,所以未找到的404错误都会转到/error/404.jsp接受处理。
但是经过试验,我发现以.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。
查阅网上资料,发现可以在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>
默认的package的特点就在于不定义namespace属性,这样所有未定义的namespace都会转向这里。name="default"是为了便于阅读,其实name是什么都可以,也可以为空:name=""。
然后还要在其它已定义的package中也添加默认的action,转向404错误处理页面。这样就可以完全处理所有的404错误了。
首先查阅网上的资料,得知可以在web.xml中加入这么一段:
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
这样,所以未找到的404错误都会转到/error/404.jsp接受处理。
但是经过试验,我发现以.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。
查阅网上资料,发现可以在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>
默认的package的特点就在于不定义namespace属性,这样所有未定义的namespace都会转向这里。name="default"是为了便于阅读,其实name是什么都可以,也可以为空:name=""。
然后还要在其它已定义的package中也添加默认的action,转向404错误处理页面。这样就可以完全处理所有的404错误了。
相关文章推荐
- Spring 3整合Quartz 2实现定时任务一:常规整合
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- 第10章 JSP、JavaBean和Servlet的配合使用
- Java内部类大解析
- Resizing array笨办法,每次都要新建一个临时数组
- Spring整合JMS——基于ActiveMQ实现
- java list三种遍历方法性能比较
- Struts2拦截器篇(一)
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- atititt.java定时任务框架选型Spring Quartz 注解总结
- Java整型有序数组遍历一次输出其中重复的值
- [Java] 异常处理
- Java 对象与json数据的转换,续写
- 普通java类调用spring注解bean
- Java抽象类和接口
- JAVA学习(八):JAVA文件编程
- JAVA学习(八):JAVA文件编程
- 从零开始学JAVA DAY2
- springmvc 中 Instantiation of bean failed实例化Bean失败错误
- 使用Java操作ElasticSearch1.7程序