`

struts异常处理

阅读更多
struts-config.xml
<global-exceptions>
 <exception key="" type="com.hugui.struts.ErrorCodeException" path="/error.jsp" handler="com.hugui.struts.ErrorCodeExceptionHandler"></exception>
	</global-exceptions>


覆盖ExceptionHandler
package com.hugui.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;

/**
 * 个性化异常处理类
 * @author Administrator
 *
 */
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 {
//		            error = new ActionMessage(ae.getKey(), ex.getMessage());
		        	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;

		    }
	
}



package com.hugui.struts;

public class AppException extends RuntimeException {

	public AppException() {
		// TODO Auto-generated constructor stub
	}

	public AppException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public AppException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}

	public AppException(String message, Throwable cause) {
		super(message, cause);
		// TODO Auto-generated constructor stub
	}

}



package com.hugui.struts;

public class UserManager {
	
	public void login(String username, String password){
		if(!"admin".equals(username)){
			throw new ErrorCodeException("login.user.not.found",username);
		}
		
		if(!"admin".equals(password)){
			throw new ErrorCodeException("login.password.error");
		}
	}
	
}


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    
<%@ taglib  uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<html:errors/>
</body>
</html>


分享到:
评论

相关推荐

    struts手动异常处理

    在Struts框架中,异常处理是不可或缺的一部分,因为它有助于确保程序的健壮性和用户体验。 手动异常处理在Struts中通常涉及到以下几个方面: 1. **异常拦截器**:在Struts 2中,我们可以通过编写自定义的拦截器来...

    Struts2异常处理机制

    Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...

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

    在提供的压缩包文件"Struts_exception"中,可能包含了Struts异常处理的相关示例代码或者教程,例如如何配置struts.xml,如何创建自定义异常类,以及如何在Action中进行异常处理等。这些资源可以帮助开发者更深入地...

    Struts2之异常处理案例struts003

    在Struts2中,异常处理是一项重要的功能,它确保在应用程序遇到错误时能够优雅地处理,提供友好的用户反馈,并保持系统稳定性。下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** ...

    Struts1异常处理

    尽管如此,许多遗留系统仍然依赖于Struts1,因此理解其异常处理机制仍然是必要的。 在Struts1中,异常处理主要通过两个组件来实现:`Action`类和`Tiles`或`Struts-config.xml`配置文件中的`exception`标签。当一个...

    Struts1.3多语言、异常处理、菜单应用.ppt

    **Struts异常处理** Struts框架提供了一种统一的异常处理机制,通过配置`struts-config.xml`文件中的`global-exception`或`global-exceptions`元素,可以捕获并处理全局的ActionException。当Action执行过程中抛出...

    struts2中异常处理(demo)

    在Struts2中,异常处理是一项重要的功能,它确保了应用程序的健壮性和用户友好的错误反馈。这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发...

    struts1.x 异常处理机制

    首先,Struts1.x框架默认的异常处理方式是通过`struts-config.xml`配置文件中的`&lt;global-exceptions&gt;`标签来定义全局异常处理。在这个标签内,你可以声明一个或多个异常类型,并为每个异常指定一个错误页面,当...

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

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

    struts2的异常处理机制

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

    struts错误处理机制小例子

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

    基于Struts的异常处理

    针对异常处理,Struts提供了一种优雅的方式,使得开发者可以自定义错误处理机制。在给定的文件中,我们看到了一个基于Struts的异常处理方案,主要涉及两个关键点:自定义异常类和自定义异常处理器。 首先,我们来看...

    struts2处理项目全局异常

    项目中出现的异常通常要用一个友好的异常页面来显示,通过对struts2.xml的配置能拦截全局异常,只要出现异常就会转向异常页面。

    struts2的异常处理

    本篇文章将深入探讨Struts2的异常处理策略,以及如何在DAO层进行单元测试配置。 在传统的Web应用中,当一个异常发生时,通常会跳转到错误页面或者返回错误信息。但在现代Web应用中,尤其是涉及到Ajax异步请求时,...

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

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

    Struts2的异常处理

    Struts2作为一款流行的Java Web框架,其异常处理机制是开发者必须掌握的关键部分。这篇博客主要探讨了在Struts2中如何有效地管理和处理异常,从而提高应用的稳定性和用户体验。 在Struts2中,异常处理主要通过两种...

Global site tag (gtag.js) - Google Analytics