`

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!,错误信息将使用配置文件里面的
分享到:
评论

相关推荐

    Jakarta Struts编程(中英文双版版电子书part1)

    Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...

    Jakarta+Struts+编程[扫描版][中文]

    Jakarta+Struts+编程[扫描版][中文] 高效的Model 2编程并不是一项简单的任务,开发人员经常...Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 Struts应用程序的打包和发布

    使用 Easy Struts for Eclipse 开发 Struts

    本文首先对 Easy Struts 及其安装配置步骤进行了简介,并通过一个循序渐进的例子介绍了如何构建一个基本的 Struts 应用程序。本文还介绍了增强 Struts 应用程序的各种方法,例如连接数据库,对应用程序进行模块化,...

    Jakarta Struts编程(中英文双版版电子书part2)

    Struts映射到Model 2设计模式的完整介绍 , 详细论述利用JSP使用Struts的知识,包括Struts标记库 Struts异常处理、验证和登录 Struts应用程序的国际化和本地化 完整论述新StrutsTiles模板库 ...

    structs程序设计从入门到精通word文档

    9.5 Struts异常处理 13 第10章 struts中使用国际化(i18n) 13 10.1 struts国际化程序尝试 13 10.1 Java对i18n的支持 14 10.1 struts框架中对国际化的支持 14 第11章 Validator验证框架 14 11.1 安装和配置Validator...

    使用EasyStrutsforEclipse开发Struts

    本文首先对EasyStruts及其安装配置步骤进行了简介,并通过一个循序渐进的例子介绍了如何构建一个基本的Struts应用程序。本文还介绍了增强Struts应用程序的各种方法,例如连接数据库,对应用程序进行模块化,内容的...

    JAVA编程百例(照着例子更容易!)

    实例10 创建一个窗体 实例100 上传文件 实例11 按扭 实例12 复选框 实例13 复合下拉列表 实例14 下拉列表 实例15 选项卡 实例16 对话框 实例17 文件对话框 实例18 使用HTML语言 实例19 菜单 实例2 java流程控制 实例...

    java视频教程Day01 免费

    9. 图形用户界面编成 (安排一个游戏例子,坦克或者飞机游戏;以及一个CS结构的QQ) 10. Applet (Applet编程) 11. Multi-Thread(多线程) 12. I/O and File (输入/输出流及文件) 13. Networking (网络编程) ...

    Java语言基础下载

    继承关系树的每个具体类对应一个表 696 创建映射文件 696 操纵持久化对象 698 选择继承关系的映射方式 699 映射多对一多态关联 702 内容总结 705 独立实践 705 第三十六章:HQL介绍 706 学习目标 706 HQL的出现 707 ...

    SSM开发框架

    05、框架实现了文件上传共通、电子文档导出、校验、全局异常处理、分页等共通,具体参见相关画面的相关功能; 06、通过注解方式实现事务控制,相关画面有测试代码,具体在哪可以自己找一下; 07、关于数据库链接,...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    最新SSM整合

    05、框架实现了文件上传共通、电子文档导出、校验、全局异常处理、分页等共通,具体参见相关画面的相关功能; 06、通过注解方式实现事务控制 07、关于数据库链接,可以使用手工获取的方式(代码表加载的例子),也...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    spring.doc

    异常通知处理例子: 91 不用spring异常通知,另一种处理异常 96 4.2.2.2Aop注解形式(了解) 99 注解注入拓展: 103 5 Spring数据库 106 5.1 Spring+JDBC 106 5.1.1 Jdbc编程特点 106 5.1.2引入DataSource 106 5.1.3...

    J2EE应用开发详解

    50 4.2 开发和部署一个简单的Servlet 51 4.3 Servlet常用API介绍 53 4.3.1 Servlet实现相关 54 4.3.2 Servlet配置相关 54 4.3.3 Servlet异常相关 55 4.3.4 请求和响应相关 55 4.3.5 会话跟踪 56 4.3.6 Servlet上下文...

    Spring 2.0 开发参考手册

    16.8. 异常处理 16.9. Portlet应用的部署 IV. 整合 17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ...

    spring chm文档

    16.8. 异常处理 16.9. Portlet应用的部署 IV. 整合 17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. ...

Global site tag (gtag.js) - Google Analytics