struts 1.1 exception handler 的应用

本文介绍Struts1.1中的异常处理机制,包括如何在配置文件中定义全局和局部异常、实现自定义异常类、抛出异常的Action及显示异常信息的方法。

在 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值