`

Struts1.X个性化异常学习

阅读更多

1.编写自己的个性化异常类。该类中,可以包含成员变量errorCode.需要填充properties占位符的args数组的Object数组类型成员变量。并定义他们的get()方法。定义四个构造函数,第一个构造函数为空,第二个构造函数为带errorCode,Object数组的构造方法,第三个为带errorCode参数的构造方法,第四为带errorCode参数,一个Object类型参数(非数组)的构造方法。后两个构造方法的实现中可以直接调用第二个声明个构造方法。

 

ErrorCodeException类:

package wiki.struts;  
public class ErrorCodeException extends RuntimeException {
	
	//define the error code,
	//it is related to the properties file.
	private String errorCode;
	
	//if you want to dynamic fill with the args,use it object array.
	private Object[] args;
	
	public ErrorCodeException(){}
	
	//if not need to fill with the args in the properties.
	public ErrorCodeException(String errorCode){
		this(errorCode,null);
	}
	
	//if you want to fill with the args in the properties.
	public ErrorCodeException(String errorCode,Object args0){
		this(errorCode,new Object[]{args0});
	}
	
	
	public ErrorCodeException(String errorCode,Object[] args){
		this.errorCode = errorCode;
		this.args = args;
	}
	
	public String getErrorCode() {
		return errorCode;
	}
	
	public Object[] getArgs() {
		return args;
	}
}
  
 



2.编写相应的ExceptionHandler类,继承自原有的ExceptionHandler。重写execute()方法。

 

ErrorCodeExceptionHandler类:

package wiki.struts; 

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 org.apache.struts.util.ModuleException;

public class ErrorCodeExceptionHandler extends ExceptionHandler {
   
    public ActionForward execute(
            Exception ex,
            ExceptionConfig ae,
            ActionMapping mapping,
            ActionForm formInstance,
            HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException {

            if(!(ex instanceof ErrorCodeException)){
                return super.execute(ex, ae, mapping, formInstance, request, response);
            }

           
            ActionForward forward = null;
            ActionMessage error = null;
            String property = null;

            // Build the forward from the exception mapping if it exists
            // or from the form input
            if (ae.getPath() != null) {
                forward = new ActionForward(ae.getPath());
            } else {
                forward = mapping.getInputForward();
            }

            // Figure out the error
            if (ex instanceof ModuleException) {
                error = ((ModuleException) ex).getActionMessage();
                property = ((ModuleException) ex).getProperty();
            } else {
                //deal with the exception,if the instance of
                //exception is ErrorCodeException.
                ErrorCodeException ece = (ErrorCodeException)ex;
                error = new ActionMessage(ece.getErrorCode(), ece.getArgs());
                property = error.getKey();

            }

            this.logException(ex);

            // Store the exception
            request.setAttribute(Globals.EXCEPTION_KEY, ex);
            this.storeException(request, property, error, forward, ae.getScope());

            return forward;
        }
}

3.配置struts-config.xml<exception/>中的key值可以任意指定,type为自己的个性化异常类,handler为在2中编写的ExceptionHandler类。

<exception key="error.exception"
			type="wiki.struts.ErrorCodeException"
			handler="wiki.struts.ErrorCodeExceptionHandler"


			path="/login_error.jsp"
			/>
 
分享到:
评论

相关推荐

    对struts1.x与struts2.x的区别的总结

    - **Struts2.x** 配置文件较少,主要为struts.xml,支持注解配置,减少XML配置的繁琐。 8. **插件与扩展性**: - **Struts1.x** 插件较少,扩展性相对较弱。 - **Struts2.x** 有丰富的插件系统,如Ajax、...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    8. **Exception Handling**:Struts1.x提供了异常处理机制,通过配置struts-config.xml中的全局异常映射,可以捕获并处理运行时异常,提高系统的健壮性。 9. **Plug-in架构**:Struts1.x具有强大的插件扩展能力,...

    struts1.x和struts2.x区别

    在Struts1.x中,Action是核心组件之一,它必须继承自org.apache.struts.action.Action类,并且需要覆盖execute方法。Action对象由框架创建和管理,每一个HTTP请求都对应一个Action实例。然而,在Struts2.x中,Action...

    struts1.x 最简洁国际化 源代码

    以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含本地化字符串和其他可配置资源的文件。对于Struts1,这些通常以`.properties`格式存储,例如`messages...

    struts1.x技术课程讲解.pdf

    ### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 ...通过以上内容的学习,学员将能够掌握 Struts1.x 的核心概念、工作原理及开发流程,进而能够独立开发基于 Struts1.x 的企业级 Web 应用程序。

    Struts1.x系列教程(网摘-全)

    9. **异常处理**:Struts1.x提供了异常处理机制,允许开发者定义全局或特定Action的异常处理策略。 10. **数据校验**:ActionForm的validate()方法可以实现服务器端的数据校验,错误信息可以通过ActionErrors对象...

    java Struts 1.x 框架 Web 开发

    8. **异常处理**:通过配置全局异常处理,Struts 1.x 可以捕获并处理应用程序中抛出的异常,提供统一的错误页面,增强了用户体验。 9. **Validator框架**:Struts 1.x 的Validator框架用于数据验证,可以定义一系列...

    struts1.x apps 所有最新的Struts1.x项目应用

    5. **异常处理和验证**:学习如何利用Struts1.x的验证框架和异常处理机制来增强应用的健壮性。 6. **最佳实践**:学习社区推荐的最佳实践,避免常见的设计和安全陷阱。 总之,Struts1.x作为Java Web开发中的经典...

    Struts1.x_Project.zip

    通过分析这个Struts1.x_Project,我们可以学习到如何配置Struts框架,理解ActionForm、Action、Struts-config.xml的作用,以及如何实现I18N和表单验证。同时,项目的数据库操作部分也是Java Web开发中重要的实践环节...

    Struts1.x-Jdbc,学习Struts1.的曾删改查

    通过以上知识点的学习,开发者可以熟练地在Struts1.x框架下利用JDBC进行数据库操作,实现Web应用的增删改查功能。在实际开发中,还需要结合具体项目需求,考虑数据缓存、安全性、可扩展性等因素,以构建高效、稳定的...

    struts1.x入门教程

    在学习Struts1.x的过程中,理解MVC模式以及ActionForm和Action的作用至关重要。此外,熟练掌握配置文件的编写,能让你更有效地组织和控制应用的流程。随着对框架的深入理解和实践,你将能够构建出更加复杂和功能丰富...

    Struts1.x的登录示例

    Struts1.x是一个经典的Java Web框架,它在20世纪末至21世纪初被广泛使用,用于构建基于MVC(Model-View-Controller)架构的Web应用。本示例将探讨如何使用Struts1.x实现一个简单的登录功能。首先,我们需要理解...

    搭建struts1.x的jar包

    首先,我们来看核心的`struts.jar`文件。这是Struts框架的核心库,包含了所有必要的类和接口,用于处理HTTP请求,管理Action类,以及实现MVC模式。它包含了ActionForm、Action、Dispatcher等关键组件,这些组件协同...

    freemarker for struts 1.x

    freemarker与struts 1.x 结合,生成html 在http://blog.csdn.net/chen1255 的web中有详细描述关于freemarker与struts1.x的结合

    Struts 2.x权威指南(第3版)

    Struts 2.x权威指南(第3版)

    Struts1.x 国际化

    在Struts1.x中实现国际化,开发者需要进行一系列配置和编码工作。 首先,我们需要了解如何在Struts1.x中设置国际化资源文件。这些文件通常是.properties格式,例如`messages_en.properties`(英语版本)和`messages...

    struts1.x 异常处理机制

    此外,对于Struts1.x中与Action相关的异常,如`org.apache.struts.action.ActionException`,你可以在Action类中直接抛出,框架会自动处理这些异常,并根据`struts-config.xml`中的配置进行相应操作。 总结来说,...

    Struts1.x 中文帮助文档

    7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期格式。 8. **异常处理**:通过配置ExceptionMapping,可以全局地处理应用程序中抛出的异常,提高程序的健壮性。 9. **...

    Struts1.x.rar

    8. **异常处理**:通过定义全局异常映射,Struts1.x可以统一处理应用程序可能出现的错误和异常,提高用户体验。 9. **安全考虑**:购物网站需要考虑安全性问题,如防止SQL注入、XSS攻击等。Struts1.x可以通过配置和...

    Struts1.x_action

    6. **异常处理**:通过`global-exceptions`配置,Struts1.x可以捕获并处理全局范围内的异常,提供统一的错误页面,增强了应用的健壮性。 7. **拦截器(Plug-ins)**:虽然Struts1.x的拦截器功能相对较弱,但仍然...

Global site tag (gtag.js) - Google Analytics