`

struts异常的处理的一个例子

阅读更多
首先定义自己的异常类
package com.langhua.oa.manager;

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;
	}
	
	public String getKey() {
		return key;
	}

	public Object[] getValues() {
		return values;
	}

}



再定义SystemExceptionHandler extends ExceptionHandler

public class SystemExceptionHandler extends ExceptionHandler {
	//当发生异常的时候会自动调用下面的方法,并传过来里面的参数
	public ActionForward execute(
			Exception ex, 
			ExceptionConfig ae,
			ActionMapping mapping, 
			ActionForm formInstance,
			HttpServletRequest request, 
			HttpServletResponse response)throws ServletException {
		 //创建AcctionForward
		ActionForward forward = null;
		//从ExceptionConfig里面获得path 如path="/common/exception.jsp"
		if(ae.getPath() != null){
			//如果path不为空,就建立相当的forward
			forward = new ActionForward(ae.getPath());
		}else{
			//为空的话就使用默认的
			forward = mapping.getInputForward();
		}
		
		//如果产生的异常是SystemException的一个实例
		if(ex instanceof SystemException){
			SystemException se = (SystemException)ex;
			
			//取出key值
			String key = se.getKey();
			//根据相关的参数创建ActionMessage
			ActionMessage error = null;
			if( key == null){
				error = new ActionMessage(ae.getKey(),se.getMessage());
			}else{
				if(se.getValues() != null){
					error = new ActionMessage(key,se.getValues());
				}else{
					error = new ActionMessage(key);
				}
			}
			//是放到request里面还是放到session里面
			this.storeException(request, key, error, forward, ae.getScope());
			//带着参数传到相关的JSP页面
			return forward;
		}
		return super.execute(ex, ae, mapping, formInstance, request, response);
	}
	
}


最后在struts的配置文件上面配置上
<global-exceptions>
		<exception 
			key="errors.detail" 
			type="java.lang.Exception"
			path="/xxxx/exception.jsp"
			scope="request"
			handler="com.xxx.xxx.xxx.SystemExceptionHandler"
		></exception>
	</global-exceptions>

在程序中的使用
if(xxx.getChildren().size()>0){
	throw new SystemException("不能删除","langhua.error");
}	

这个里面的key就是langhau.error,是指定了的,如果没有指定的话就会使用配置文件里面配置的errors.detail
如果在MessageResources.properties配置了langhua.error=error!,错误信息将使用配置文件里面的
分享到:
评论

相关推荐

    struts错误处理机制小例子

    2. **全局异常处理**:在struts-config.xml中,我们可以定义全局的异常映射(global-exceptions)。当Action执行过程中抛出未被捕获的异常时,Struts会查找匹配的异常映射,根据配置转发到特定的错误页面。例如,...

    struts的一个例子

    此外,Struts还有其他重要特性,如国际化、异常处理、Tiles组件用于页面布局,以及Struts2的拦截器、OGNL表达式语言等。学习Struts有助于理解MVC设计模式,为后续学习其他Web框架(如Spring MVC)打下坚实基础。 ...

    Struts1异常处理

    Struts1是一个经典的Java Web开发框架,它在20世纪末到21世纪初非常流行,主要用于构建MVC(Model-View-Controller)架构的应用程序。然而,随着技术的发展,Struts1逐渐被Struts2和其他更现代的框架如Spring MVC所...

    一个Struts的简单例子

    这个“一个Struts的简单例子”提供了一个基础的用户登录应用,非常适合初学者了解和学习Struts框架的基本用法。下面将详细解释这个例子中的关键知识点。 1. **MVC设计模式**: MVC模式是Web应用程序开发中常见的...

    struts2完整例子

    9. **异常处理**:Struts2提供了一套完善的异常处理机制,通过`&lt;global-exception-mappings&gt;`和`&lt;package&gt;`内的`&lt;exception-mapping&gt;`标签,可以定义全局或局部的异常处理策略。 10. ** strut2-helloworld 示例**:...

    Struts2.0简单的入门例子

    本篇将通过一个简单的入门例子,带你了解并掌握Struts2的核心概念和基本用法。 首先,我们需要理解MVC模式。在MVC模式中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,而控制器(Controller)则负责...

    Struts应用9个例子

    1. **基础配置示例**:这个例子通常涉及创建一个基本的Struts项目结构,包括配置struts-config.xml文件,设置ActionForm、Action和Result。理解这些配置元素对于搭建Struts应用程序至关重要。 2. **简单表单提交**...

    struts2的异常处理机制

    Struts2是一个流行的Java web框架,它提供了强大的异常处理机制,使得开发者能够优雅地管理和展示在应用程序中出现的错误和异常。以下是对Struts2异常处理机制的详细说明: 1. **异常处理流程**: 当一个Action...

    struts例子

    在描述中,我们看到反复提到了“自己写的struts的例子”,这意味着这个压缩包可能包含了一个或多个基于Struts实现的示例项目。这些示例通常会展示如何配置Struts框架,以及如何使用它的核心组件来创建动态网页。 ...

    Struts2 异常处理的四种获取属性方法

    在Struts2框架中,异常处理是至关重要的一个部分,它确保了应用程序的稳定性和用户体验。Struts2提供了多种方式来捕获和处理异常,帮助开发者优雅地处理程序中的错误情况。以下是Struts2异常处理的四种主要方法,...

    struts2入门级的例子

    这个“struts2入门级的例子”是一个非常适合初学者的资源,它将引导你了解Struts2的基础知识和核心概念。通过实践这些例子,你可以快速掌握Struts2的使用方法,从而提高你的Web开发技能。 1. **配置环境**: 首先,...

    Struts 声明式异常处理和个性化异常处理

    Struts是Java Web开发中的一个流行框架,它主要用于构建企业级的应用程序。声明式异常处理和个性化异常处理是Struts框架中的两个重要特性,它们帮助开发者更有效地管理和处理应用程序可能出现的异常情况,从而提高...

    struts2入门例子

    实践这个例子,你可以了解到如何设置一个简单的Struts2应用,从而为进一步学习更复杂的特性如国际化、文件上传、异常处理等奠定基础。 总之,Struts2是一个强大的MVC框架,它的核心在于`struts.xml`配置文件,通过...

    struts1.2 简单文件上传例子

    Struts1.2是一个经典的Java Web框架,由Apache软件基金会开发。它提供了MVC(Model-View-Controller)设计模式的实现,使得开发者能够更方便地构建可维护、可扩展的Web应用程序。在这个"struts1.2简单文件上传例子...

    struts小例子

    8. **异常处理**:Struts框架提供了一种统一的异常处理机制,允许开发者定义全局或特定Action的异常处理策略。 9. **Tiles框架集成**:Struts可以与Tiles框架集成,用于创建可重用的页面布局,提高开发效率。 10. ...

    典型的struts2例子

    此外,Struts2还提供了拦截器(Interceptors)、插件(Plugins)、主题和皮肤(Themes and Skins)等功能,使得开发者可以方便地实现权限控制、日志记录、异常处理等高级功能。对于大型项目,Struts2还可以结合...

    Struts写的一个转账小例子

    在"Struts写的一个转账小例子"中,我们可以看到一个典型的Struts应用如何处理用户请求,执行业务逻辑并返回响应。 这个转账小例子可能包括以下几个主要部分: 1. **Action类**:在Struts中,Action类是控制器的...

    struts1.3 入门级例子

    8. **错误与异常处理**: 通过在Struts-config.xml中定义全局异常处理,可以统一处理应用程序可能出现的异常,提高用户体验。 9. **Tiles框架集成**: 虽非基础部分,但Struts1.3可与Tiles框架集成,实现页面布局的...

    struts入门最简单例子

    Struts2是一个强大的MVC(Model-View-Controller)框架,是Java Web开发中的重要工具。这个"struts入门最简单例子"旨在帮助初学者快速理解并掌握Struts2的基本用法。Struts2框架提供了丰富的功能,如动作映射、结果...

    struts1小例子

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它...这只是一个起点,实际开发中Struts1还有更多高级特性和插件可以使用,如国际化、异常处理、标签库等,能够帮助开发者构建更复杂的Web应用程序。

Global site tag (gtag.js) - Google Analytics