关于 Struts 1.1 Exception Handler 的应用补充 (转)

本文介绍如何在Struts1.1中配置全局及局部异常处理,通过定义异常类和异常处理Action,最终在error.jsp中展示异常信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于 Struts 1.1 Exception Handler 的应用补充 (转)[@more@]

  通常,我们在应用struts1.0进行开发的过程中,对于异常的处理,主要是采用手动处理的方式。

  如通过 try/catch 等捕获异常,然后通过 FormBean.returnString ()或Debug.println ("");的方式 ,把这些错误信息反馈给用户或开发人员。

  在 Struts 1.1 中,引入了新的异常处理机制,让我们可以通过配置文件(主要是struts-config.XML)来定制异常处理,就象定义formbean一样。

  下面,我们就来看看如何具体地运用这个新特性。

 

一、定制异常(在 struts-config.xml文件中定义)

 

  定制异常也有两种方法,姑且把它分为:“全局异常(Global Exceptions)”和“局部异常 (Local Exception)”。

  “全局异常”定义方法如下:

 

SCOpe="request"

Handler="org.apache.struts.action.ExceptionHandler"microsoft-com:Office:office" />

path="error.JSP"/> 

上述代码在struts-config.xml中定义了一个全局异常,它的作用是抛出InvalidiUserNameException(在这里的意思是当在添加用户的时候,发现该用户已经存在)异常的时候返回到error.jsp中,并且携带自定的比较规范的异常信息struts.test.InvalidUserName,struts.test.InvalidUserName可以在应用程序的资源配置文件中找到,如:

struts.test.InvalidUserName =重复注册用户!

局部异常,定义方法如下:

pings>

 

    type="struts.test.UserLogonAction"

    name="userLogonForm">

   

type="struts.test.InvalidiUserNameException"

Handler="org.apache.struts.action.ExceptionHandler"

path="/error.jsp"/>

   

 

关于异常在 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,

        HttpservletRequest request,

        HttpServletResponse response)throws Exception {

  throw new struts.test.InvalidiUserNameException ();

  }

}

 

四、显示我们的异常信息

为了显示我们的友好错误提示信息,我们可以编写一个error.jsp 文件,内容如下:

error.jsp 

taglib uri="/web-INF/struts-bean.tld" prefix="bean" %>

 
 

 
 

 

 
 

 
 

 
 

 

Struts 1.1 Exception Handler Demo
 
 

 

 
 

 

 
 

 

 
 

 

系统出现一个意外

 
 

  请将下面的提示信息反馈给你的系统管理员:

 
 

     <!--将在这里显示”重复注册用户!”--&gt

 
 

 

 
 

 五、出现我们的异常

好了,我们可以看到我们的异常了。当执行到上面的 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

补充说明:

FormBean.returnString ():是我们自己定义的一个用于显示在用户页面的友好提示信息

 Debug 是我们自己定义的一个显示控制台错误信息的类

DAO/Oper :具体实现数据库操作或其他的类

 

感谢:

.NET">http://www.scioworks.net

2003-8-8


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-959565/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-959565/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值