在 Struts 1.1 中,引入了新的异常处理机制,让我们可以通过配置文件(主要是struts-config.xml)来定制异常处理,就象定义formbean一样。
下面,我们就来看看如何具体地运用这个新特性。
一、定制异常(在 struts-config.xml文件中定义)
定制异常也有两种方法,姑且把它分为:“全局异常(Global Exceptions)”和“局部异常 (Local Exception)”。
“全局异常”定义方法如下:
<global-exceptions>
<exception key="struts.test.InvalidUserName" type="struts.test.InvalidiUserNameException"
scope="request"
Handler="org.apache.struts.action.ExceptionHandler"
path="error.jsp"/>
</global-exceptions>
上述代码在struts-config.xml中定义了一个全局异常,它的作用是抛出InvalidiUserNameException(在这里的意思是当在添加用户的时候,发现该用户已经存在)异常的时候返回到error.jsp中,并且携带自定的比较规范的异常信息struts.test.InvalidUserName,struts.test.InvalidUserName可以在应用程序的资源配置文件中找到,如:
struts.test.InvalidUserName =重复注册用户!
局部异常,定义方法如下:
<action-mappings>
<action path="/userLogonAction"
type="struts.test.UserLogonAction"
name="userLogonForm">
<exception key="struts.test.InvalidUserName"
type="struts.test.InvalidiUserNameException"
Handler="org.apache.struts.action.ExceptionHandler"
path="/error.jsp"/>
<forward name="success" path="/index.jsp"/>
</action>
</action-mappings>
关于异常在 Struts 1.1 中 Struts-config.xml 的定义就这么简单。
二、实现我们的异常类(struts.test.InvalidiUserNameException)
为了实现 struts.test.InvalidiUserNameException 这个异常,我们必须自己编写一个继承于 Exception 的异常:InvalidiUserNameException。
File name : InvalidiUserNameException.java
package struts.test;
public class InvalidiUserNameException extends Exception
{
public InvalidiUserNameException ()
{
super();
}
}
三、一个抛出异常的Action
我们假设下面这个异常将会抛出 struts.test.InvalidiUserNameException :
public class UserLogonAction extends BaseAction {
public ActionForward execute(ActionMapping mapping,
ActionForm form,sp; HttpServletRequest request,
HttpServletResponse response)throws Exception {
throw new struts.test.InvalidiUserNameException ();
}
}
四、显示我们的异常信息
为了显示我们的友好错误提示信息,我们可以编写一个error.jsp 文件,内容如下:
error.jsp
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html locale="true">
<head>
<title>Struts 1.1 Exception Handler Demo</title>
<html:base />
</head>
<body>
<h1>系统出现一个意外</h1>
请将下面的提示信息反馈给你的系统管理员:<br>
<html:errors /> <!--将在这里显示”重复注册用户!”-->
</body>
</html:html>
五、出现我们的异常
好了,我们可以看到我们的异常了。当执行到上面的 Action 的时候,程序将会抛出InvalidiUserNameException ,而 struts1.1的 Exception Handler 将会捕捉这个异常,并在 struts-config.xml寻找匹配的异常定义信息,最终转到error.jsp并且显示了我们定义的错误信息:
重复注册用户!
以上的代码只是从整体上介绍了如何使用 Struts 1.1 的异常处理机制,在我们具体的实现中,我们可以在 DAO/Oper 层抛出异常,并不需要在 Action 层抛出。
所以,我们定制的异常在程序中并不需要用try/catch来捕获,一旦出现了我们已经定义的异常那么就会转到相应的页面,并且显示相应定制的信息。
我们上面是使用 Struts 默认的异常处理 Handler org.apache.struts.action. ExceptionHandler 来处理的。
我们也可以定义自己的处理方式,只要继承它并实现其中的execute方法,这个方法在 ExceptionHandler 的定义如下:
public ActionForward execute(Exception ex,
ExceptionConfig ae,
ActionMapping mapping,
ActionForm formInstance,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
分享到:
相关推荐
[其他类别]利用handler生成静态页面的完整解决方案 v1.1_handler(ASP.NET源码).rar
[其他类别]利用handler生成静态页面的完整解决方案 v1.1_handler.zip源码ASP.NET网站源码打包下载[其他类别]利用handler生成静态页面的完整解决方案 v1.1_handler.zip源码ASP.NET网站源码打包下载[其他类别]利用...
源码参考,欢迎下载
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
crashMe and exception handler, create minidump in windown
spring boot exception handler.zip
本文实例讲述了set_exception_handler函数在ThinkPHP中的用法。分享给大家供大家参考。具体方法如下: 函数: 复制代码 代码如下:string set_exception_handler ( callback $exception_handler ) 定义和用法: set_...
java解决Handler processing failed; nested exception is java.lang.NoClassDefFoundError
spring-rest-exception-handler, 一个方便的RESTful api Spring MVC 异常 spring REST异常处理程序 这个项目的目的是为for提供一个方便的异常处理程序( 解析器),它满足了错误响应的最佳实践。 处理自定义异常。...
Laravel开发-exception_handler Laravel 5网站的异常处理程序。
Laravel开发-enhanced-exception-handler Laravel的增强异常处理程序
git clone https://github.com/master-atul/react-native-exception-handler-example yarn install react-native run-ios --configuration Release或react-native run-android --variant=release 即使在开发模式...
Laravel开发-laravel-jsonaware-exception-handler .zip
Laravel开发-laravel-jsonaware-exception-handler Laravel JSON感知异常处理程序
Structured Exception Handler EXPLOITATIONBrian Marianihttp://www.htbridge.ch/http://www.htbridge.ch/What is an exception• An exception is an event that occurs during the execution of a program• ...
通过 Foxit PDF Preview Handler 可以让你的OutLook2007预览PDF 文件。 Foxit PDF Preview Handler 1.1 For XP
Android应用程序消息处理机制(Looper、Handler)分析
Android 中级应用 handler 之二 初试handler
Handler的简单应用老版老虎机.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。