struts1.1中的异常应用实践

泌然羽唏鞋业

泌然羽唏鞋业

2016-02-19 14:02

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的struts1.1中的异常应用实践,手机电脑控们准备好了吗?一起看过来吧!

  struts的异常处理机制带我们很大的方便。通过思考和自己作例子,觉得以下这种方式较为灵活:

      首先为你的应用程序定制一套异常类。例如,先定义一个基类(可以是虚类),注重,在此它扩展自RuntimeException,这是为了在struts的action中顺利捕捉到。

  
  public class BaseException extends RuntimeException {...}

  下来你可以定义几个子类,例如:Dao异常,事务处理异常,service异常等。在spring中,包
  org.springframework.dao下定义了一套Dao异常,值得大家学习一下。

  接着,在struts-cofig.XML文件中定义全局异常如下,此处的key属性我已经不预备用了:
      global-exceptions
          exception key="todo" type="org.chage.exception.BaseException"        handler="org.chage.exception.MyExceptionHandler" /
      /global-exceptions

     
  下面看一下我的处理异常的类:
     
  package org.chage.exception;
  import org.apache.struts.action.ExceptionHandler;
  import ...  
  public class MyExceptionHandler  extends ExceptionHandler {

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

   public ActionForward execute(
     Exception exception,
     ExceptionConfig config,
     ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
    throws ServletException
   {      
      request.setAttribute("exception", exception);
      //返回原始请求的Forward,当然你也可以定义一个全局异常ForWord,都转向它
      return mapping.getInputForward();
   }
  }
  

  在页面上(此页面我们设置为请求action,即发生异常的action的input属性),我们显示错误信息时可以使用struts标签如下,注重,这里显示的信息和资源属性文件无关,是你自己抛出的:

  logic:present name="exception"
     bean:write name="exception"/
  /logic:present

  这样作的好处在哪里呢?我们来看一下,一般我们的思路是,发生了逻辑错误,比如说,用户名输重复,或者预备修改的数据已被他人删除等,我们要捕捉它并显示给用户,第一感是在action中作的,例如:
  try{
     //do something logic method...
  }catch (XXXException e){
    ActionErrors errors= new ActionErrors();
    ActionError error=new ActionError("error.missing.username");
    errors.add("error.xxx",error);
    saveErrors(request,errors);
    return mapping.findForward("errorPage");
  }

   
  设计良好的action应该仅仅是web层的一个“路标指引器”,真正的逻辑方法是调用其他的业务bean来完成的,简单地说,通常认为action中的代码越少越好.假如采用了上面那种全局异常处理机制,action此时就可以不用管逻辑异常了,由业务bean负责抛出就可以了,大家就可以少写一些action中的try  catch 语块了,也可以绕开ActionError,思路上是不是更清楚?异常在真正发生的类中被抛出,然后向上传递,一直传到action中,struts负责捕捉之,当然这里的异常你必须已经定义过了。

  注:
  1. 假如你不想写 MyExceptionHandler 类,当然struts-config.xml中的handler=属性也要去掉,还有一种办法可以显示错误信息在 jsp页上,先引用jstl标签库,然后如下:

  c:out value="${requestScope['org.apache.struts.action.EXCEPTION'].message}"/

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  
  

展开更多 50%)
分享

猜你喜欢

struts1.1中的异常应用实践

编程语言 网络编程
struts1.1中的异常应用实践

了解Struts1.1介绍

编程语言 网络编程
了解Struts1.1介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在JBuilder9上使用Struts1.1的实现

编程语言 网络编程
在JBuilder9上使用Struts1.1的实现

Struts 1.1 安装、示例篇

编程语言 网络编程
Struts 1.1 安装、示例篇

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在Eclipse中开发struts应用程序

编程语言 网络编程
在Eclipse中开发struts应用程序

<C++实践系列>C++中的异常(exception)

C语言教程 C语言函数
<C++实践系列>C++中的异常(exception)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在JBuilder9上使用Struts1.1的实现

在JBuilder9上使用Struts1.1的实现

将PowerPoint2003图片置于底层不覆盖文字

将PowerPoint2003图片置于底层不覆盖文字
下拉加载更多内容 ↓