`

struts中利用ExceptionHandler处理异常

 
阅读更多

package com.ex;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ExceptionHandler;
import org.apache.struts.config.ExceptionConfig;

import com.ex.SystemException;

public class SystemExceptionHandler extends ExceptionHandler {

@Override
public ActionForward execute(Exception ex, ExceptionConfig ae,
    ActionMapping mapping, ActionForm formInstance,
    HttpServletRequest request, HttpServletResponse response)
    throws ServletException {
  
        ActionForward forward = null;
        ActionMessage error = null;
        String property = null;  
        if (ae.getPath() != null) {//配置文件中的path
            forward = new ActionForward(ae.getPath());
        } else {
            forward = mapping.getInputForward();//如果没有找到path,转到input配置的路径
        }  
  
        this.logException(ex);
        
  //处理自定义的异常类SystemException
   if(ex instanceof SystemException){
    SystemException se = (SystemException)ex;
   //如果只有message,而没有key
    if(se.getKey() == null){
     error = new ActionMessage(ae.getKey(), ex.getMessage());
     property = ae.getKey();
    }else{ //SystemException中有key值
     error = new ActionMessage(se.getKey(),se.getValues());
     property = se.getKey();
    }
         request.setAttribute(Globals.EXCEPTION_KEY, ex);
         this.storeException(request, property, error, forward, ae.getScope());
         
         return forward;
   }
  
   return super.execute(ex, ae, mapping, formInstance, request, response);
}

}
struts-config.xml中配置:

    <global-exceptions>
   <exception 
    type="java.lang.Exception"
    handler="com.ex.SystemExceptionHandler"
    path="/pub_exception.jsp"
    scope="request"
   >
   </exception>
</global-exceptions>

分享到:
评论

相关推荐

    struts1.x 异常处理机制

    另外,你还可以通过继承`org.apache.struts.action.ExceptionHandler`接口来自定义异常处理器,这允许你在整个应用程序范围内统一处理异常,而不仅仅是单个Action。 此外,对于Struts1.x中与Action相关的异常,如`...

    Struts 友好错误提示

    除了基本的异常处理,还可以利用Struts提供的拦截器进行更高级的错误处理。比如,可以创建一个自定义拦截器,记录错误日志、提供统一的错误页面,或者在特定条件下重定向用户。 为了实现友好错误提示,我们需要确保...

    STRUTS中文文档PPT详解

    Struts提供了全局异常处理机制,通过配置ActionError和ExceptionHandler,可以统一处理运行时异常,提高系统的健壮性。 八、Validator验证框架 Struts的Validator组件用于校验用户输入,可以自定义验证规则,并在...

    Java Web应用中常见的错误和异常问题处理.zip

    - **Struts2**:通过全局异常拦截器或在Action类中定义通用异常处理方法来捕获和处理异常。 8. **日志和调试** - **日志框架**:如Log4j、SLF4J和Logback,用于记录异常信息,便于追踪问题。合理设置日志级别和...

    基于Struts的新闻发布系统

    7. **异常处理**:Struts提供了一套强大的异常处理机制,通过全局的ExceptionHandler或者在struts-config.xml中配置ActionMapping的exception属性,可以对各种异常进行统一处理。 8. **Tiles框架集成**:Tiles是一...

    spring与struts集成方案二

    在Spring中,可以使用@ControllerAdvice和@ExceptionHandler进行全局异常处理;而在Struts中,可以配置全局的ExceptionMapping来捕获并处理异常。 - 在集成环境中,需要协调两者之间的异常处理,确保整个应用程序的...

    [信息办公]Struts图书馆管理系统_struts.zip

    - Struts支持全局的异常处理机制,可以在struts-config.xml中配置全局的ExceptionHandler。 8. **国际化与本地化**: - Struts支持多语言,可以通过资源包(properties文件)实现不同语言环境下的显示。 9. **...

    struts2.1.6零配置DEMO

    可以通过`@ExceptionHandler`和`@ActionError`注解来处理Action中的异常和错误。 这个DEMO展示了Struts2框架如何在没有XML配置文件的情况下运行,通过注解实现Action、结果映射、拦截器和其他核心功能。这对于理解...

    Struts教程

    此外,Struts还提供了异常处理机制,通过全局的ExceptionHandler来捕获并处理应用程序中的异常。 Struts2是Struts的升级版,它增强了功能,如更强大的表达式语言(OGNL),以及更灵活的拦截器(Interceptor)体系,...

    Struts良葛咯的笔记

    12. **异常处理**:Struts框架提供了全局异常处理机制,可以在struts-config.xml中配置全局的ExceptionHandler来捕获并处理异常。 13. ** strut2-json-plugin**:Struts2提供了JSON插件,使应用程序能够方便地处理...

    详解struts1的配置文件.doc

    - **Handler**:指定异常处理类,通常是继承自`org.apache.struts.action.ExceptionHandler`的自定义类。 - **Key**:指定异常消息的国际化资源键。 - **Path**:异常发生时的转发路径。 - **Scope**:指定...

    J2EE Struts 练习

    Struts提供了一种统一的异常处理机制,通过定义全局的ExceptionHandler,可以捕获并处理应用程序中的异常,提高错误处理的规范性和一致性。 9. **Struts与Spring的整合** 在现代的企业级应用中,Struts通常与...

    Struts2项目DOE

    3. **异常处理**:使用`@ExceptionHandler`或全局异常处理类捕获并处理应用中的异常。 4. ** Tiles框架集成**:用于创建复杂的页面布局,每个部分可以由单独的Action处理。 5. **AJAX支持**:Struts2的JSON插件使得...

    Struts2完全学习手册-第15-18章 源码

    - **Action级别异常处理**: 在Action类中使用`@ExceptionHandler`注解或自定义Result类型来处理特定的异常。 通过这些章节的学习,你可以深入理解Struts2的工作原理,掌握如何编写Action、配置Struts2、利用拦截器...

    基于MVC的Struts框架的实现

    7. **异常处理**:通过配置全局的ExceptionHandler,Struts可以捕获和处理运行时异常,提供统一的错误页面。 8. **拦截器(Interceptor)**:Struts 2引入了拦截器机制,允许在Action执行前后插入自定义逻辑,如...

    struts 2 tips

    可以通过配置全局结果(global results)来处理未捕获的异常,或者在Action类中定义异常处理方法,配合`@ExceptionHandler`注解。 10. **Struts 2与其他技术的集成** Struts 2 能很好地与Spring、Hibernate等其他...

    struts2 配置

    可以通过`&lt;global-exception-mappings&gt;`标签定义全局异常处理,以及在Action中使用`@ExceptionHandler`注解处理特定异常。 综上所述,Struts2配置涉及多个方面,包括Action、拦截器、结果类型、常量、注解和异常...

    spring+struts

    6. **异常处理**:Spring 提供了统一的异常处理机制,可以与 Struts 的 ExceptionHandler 结合,实现更精细的错误处理。 整合 Spring 和 Struts 可以利用两者的优点,如 Spring 的 DI 和 AOP 功能,以及 Struts 的 ...

    hibernate

    异常处理在 Struts 1.1 版本中得到了增强,提供了声明式的异常处理机制。默认的 ExceptionHandler 类会捕获 Action 类中的异常,将 ActionError 对象存储在 JSP 可访问的范围内,从而可以在视图层展示错误信息。...

    struts2框架应用,最简单,适合刚刚起步

    8. **异常处理**:学习Struts2的全局异常处理机制,如Global Exception Mapping,以及在Action类中使用@ExceptionHandler注解。 9. **环境配置**:在Eclipse 3.4中搭建Struts2开发环境,包括JDK、Tomcat6的安装与...

Global site tag (gtag.js) - Google Analytics