`

struts1.3-自定义exception

阅读更多

1 自定义异常类 SystemException.java

public class SystemException extends RuntimeException{
 //自定义key
 private String key;
 //自定义参数
 private Object[] values;

 //实现父类的构造方法
 public SystemException() {
  super();
 }

 public SystemException(String message, Throwable cause) {
  super(message, cause);
 }


 public SystemException(String message) {
  super(message);
 }


 public SystemException(Throwable cause) {
  super(cause);
 }

 //自定义构造方法
 public SystemException(String message, String key) {
  super(message);
  this.key=key;
 }

 //自定义构造方法,带一个参数
 public SystemException(String message, String key,Object value) {
  super(message);
  this.key=key;
  this.values=new Object[]{value};
 }
 
 //自定义构造方法,带多个参数
 public SystemException(String message, String key,Object[] values) {
  super(message);
  this.key=key;
  this.values=values;
 }
 
 //相应的get方法
 public String getKey() {
  return key;
 }

 public Object[] getValues() {
  return values;
 }
}
2 自定义异常处理器 SystemExceptionHandler.java

//作用:截获SystemException,并根据SystemException中的信息动态创建ActionMessage等这些错误信息,
        将其存在request中
public class SystemExceptionHandler extends ExceptionHandler{

 /**
  * 处理SystemException异常
  */
 @Override
 public ActionForward execute(Exception ex,//抛出的异常
         ExceptionConfig config,//struts-config.xml中的配置信息
         ActionMapping mapping,
          ActionForm form,
         HttpServletRequest request,
         HttpServletResponse response) throws ServletException {
  
  ActionForward forward=null;
  //创建ActionForward
  if(config.getPath()!=null){
   //有path属性,则根据path创建
   forward=new ActionForward(config.getPath());
  }else {
   //没有path属性,则根据input属性创建
   forward=mapping.getInputForward();
  }
  if(ex instanceof SystemException){
   SystemException se=(SystemException)ex;
   //key可有可无,所以取出key进行判断
   String key=se.getKey();
   ActionMessage error=null;
   //如果自定义的key为空,用struts的
   if(key==null){
    //拿出error.default和message,创建ActionMessage对象
    error=new ActionMessage(config.getKey(),se.getMessage());
   }else {
    //如果自定义的key有值
    if(se.getValues()!=null){
     error=new ActionMessage(key,se.getValues());
    }else {
     //如果自定义的key有值,则根据key创建ActionMessage对象
     error=new ActionMessage(key);
    }
   }
   //将这个ActionMessage放到request中。key为自定义的,error为ActionMessage对象
   //forward是要转到什么地方,根据path属性创建。"request"为scope的一个,也可以
   //用config.getScope()
   this.storeException(request, key, error, forward, config.getScope());
   return forward;
  }
  return super.execute(ex, config, mapping, form, request, response);
 }
}


3 编写配置文件 struts-config.xml

<global-exceptions>
   <exception key="error.default"
        type="java.lang.Exception"
        scope="request"
        path="/common/exception.jsp"
    <!-- 自定义的异常处理类 -->
        handler="org.oa.common.SystemExceptionHandler"/>
</global-exceptions>

4 编写资源文件 ApplicationResources.properties

error.default={0}
error.org.del=Can't Del Orgnation,id is {0}!

5 业务代码

throw new org.oa.common.SystemException("存在子机构,不允许删除!","error.org.del",org.getOname());

分享到:
评论

相关推荐

    Struts1.3和config配置详解

    6. **Controller配置**:Struts1.3中的控制器主要由`ActionServlet`实现,这部分配置主要是关于Servlet的初始化参数,如`processorClass`用于指定自定义的Processor。 7. **Plug-in配置**:插件扩展了Struts的功能...

    SSH_struts1.3_hibnerate3.2_spring2.5框架整合开发

    Struts1.3引入了Tiles框架,方便构建复杂的页面布局,并提供了Interceptor拦截器机制,可以自定义处理请求和响应的过程。 Hibernate3.2则是一个强大的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作...

    struts-1.3.10文档

    11. **Plug-in机制**:Struts 1允许添加自定义插件扩展功能,如Spring集成、Hibernate集成等,增强了框架的灵活性。 12. **生命周期**:当一个请求到达时,Struts 1会创建Action实例,处理请求后销毁,遵循Servlet...

    struts 文档含详细的例子

    6. **异常处理**:Struts提供了全局的Exception Handling机制,允许开发者自定义错误页面和异常处理策略,增强了应用的健壮性。 7. **ActionForward与ActionRedirect**:ActionForward用于在Action执行后将控制权...

    struts1.2配置详细

    &lt;exception-type&gt;javax.servlet.ServletException&lt;/exception-type&gt; &lt;location&gt;/common/system_error.jsp &lt;/error-page&gt; ``` 这些配置指定了当出现特定 HTTP 错误或 Java 异常时,应该转向哪个 JSP 页面进行显示...

    struts文件上传 - 两种方式

    Commons-Fileupload提供了更底层的控制,适合自定义更复杂的文件处理逻辑,而FileForm则提供了简洁的API,适用于简单的文件上传场景。无论选择哪种方式,都需要关注文件大小限制、安全验证以及存储策略,以确保文件...

    达内培训机密资料_struts2_day05(2)

    ### 一、Struts2框架中的自定义拦截器 #### 1.1 概念介绍 - **拦截器**是Struts2框架中的一个核心组件,用于对Action执行前后进行一系列操作,如权限验证、日志记录等。 - **自定义拦截器**则是开发者可以根据自己...

    Struts2.0框架技术详解

    public String intercept(ActionInvocation invocation) throws Exception { long start = System.currentTimeMillis(); String result = invocation.invoke(); long end = System.currentTimeMillis(); System...

    struts2相关

    **1.3 构建 Struts2 应用的步骤** - **引入 Struts2 相关 JAR 包**:确保项目中包含了所有必要的 Struts2 及其依赖库。 - **创建 Struts.xml 文件**:此文件是 Struts2 的核心配置文件,用于定义 Action 映射、结果...

    深入浅出Struts2(附源码)

    3.6 异常处理:exception-mapping元素 47 3.7 通配符映射 48 3.8 动态方法调用 51 3.9 对动作类进行测试 51 3.10 小结 51 第4章 OGNL 52 4.1 Value Stack栈 52 4.2 读取Object Stack里的对象的属性 53 4.3 ...

    达内培训机密资料_struts2_day04(2)

    这里定义了一个名为`loggingStack`的拦截器栈,其中包含了自定义的日志拦截器`logging`以及默认的拦截器栈`defaultStack`。 通过以上分析,可以看出Struts2的核心标记库和拦截器都是该框架中非常重要的组成部分,...

    java最新面试宝典

    - `Exception`与`Error`的区别。 - 自定义异常的创建方法。 - `try-catch-finally`语句块的使用。 - `throws`关键字的作用。 - `Throwable`类中的方法如`printStackTrace()`的用途。 - **面试考察要点:** - ...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    3.6 异常处理:exception-mapping元素 47 3.7 通配符映射 48 3.8 动态方法调用 51 3.9 对动作类进行测试 51 3.10 小结 51 第4章 OGNL 52 4.1 Value Stack栈 52 4.2 读取Object Stack里的对象的属性 53 4.3 读取...

    开发者文档

    - `exception`: 存放项目或模块的自定义异常类。 - `service`: 存放业务接口及其实现类。 - `util`: 存放项目或模块的工具类。 - `vo`: 存放数据传输对象。 - `web.action`: 存放展示层action类。 - **设计...

    开发智能文档

    - `exception`: 自定义异常类。 - `service`: 业务逻辑接口及其实现。 - `util`: 工具类。 - `vo`: 数据传输对象。 - `web.action`: 展示层Action类。 **1.7 配置文件** - **Struts配置文件:** 使用`***.xml`...

    java课堂笔记_自己总结的

    - 自定义异常: 通过继承 `Exception` 类创建自定义异常类。 ### JSP与Java Web 开发 - **JSP**: Java Server Pages,一种基于Java的服务器端技术,用于生成动态Web页面。 - **BaseDAO**: 数据访问对象的基础类,...

Global site tag (gtag.js) - Google Analytics