`
buaasss
  • 浏览: 27252 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

struts2异常处理

阅读更多

    * 编写整个系统统一的异常类:SystemException

 

package com.bjsxt.oa;

public class SystemException extends RuntimeException {

	private static final long serialVersionUID = -335620998894315124L;

	private String messageKey;

	private String[] messageArgs;

	public SystemException() {
		super();
	}

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

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

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

	public SystemException(String messageKey, String message) {
		super(message);
		this.messageKey = messageKey;
	}

	public SystemException(String messageKey, String messageArgs, String message) {
		super(message);
		this.messageKey = messageKey;
		this.messageArgs = new String[] { messageArgs };
	}

	public SystemException(String messageKey, String[] messageArgs,
			String message) {
		super(message);
		this.messageKey = messageKey;
		this.messageArgs = messageArgs;
	}

	public String getMessageKey() {
		return messageKey;
	}

	public String[] getMessageArgs() {
		return messageArgs;
	}

}

 

   * 实现对异常的处理,为一个struts2的interceptor:SystemExceptionInterceptor

package com.bjsxt.oa.web;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.bjsxt.oa.SystemException;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.opensymphony.xwork2.util.ValueStack;

@SuppressWarnings("serial")
public class SystemExceptionInterceptor extends AbstractInterceptor {

	private static final Log logger = LogFactory
			.getLog(SystemExceptionInterceptor.class);

	private String error;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		try {
			return invocation.invoke();
		} catch (SystemException systemException) {
			logger.error("程序出现异常", systemException);

			ValueStack valueStack = invocation.getInvocationContext()
					.getValueStack();
			ActionSupport actionSupport = (ActionSupport) invocation
					.getAction();

			exception(systemException, actionSupport, valueStack);

			return Action.ERROR;
		}
	}

	private void exception(SystemException systemException,
			ActionSupport action, ValueStack valueStack) {
		// 取出key值
		String messageKey = systemException.getMessageKey();
		String[] args = systemException.getMessageArgs();

		if (messageKey == null) {
			error = systemException.getMessage();
		} else if (args != null && args.length > 0) {
			error = action.getText(messageKey, args);
		} else {
			error = action.getText(messageKey);
		}
		//把值放到ValueStack中
		valueStack.set("error", error);

	}

	public String getError() {
		return error;
	}

	public void setError(String error) {
		this.error = error;
	}
}

  

   * 编写struts2国际化文件:MessageResources.properties

# -- standard errors --
errors.header=<UL>
errors.prefix=<LI>
errors.suffix=</LI>
errors.footer=</UL>
# -- validator --
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
# -- other --
errors.cancel=Operation cancelled.
errors.detail={0}
errors.general=The process did not complete. Details should follow.
errors.token=Request could not be completed. Operation is not in sequence.
# -- welcome --
welcome.title=Struts Blank Application
welcome.heading=Welcome!
welcome.message=To get started on your own application, copy the struts-blank.war to a new WAR file using the name for your application. Place it in your container's "webapp" folder (or equivalent), and let your container auto-deploy the application. Edit the skeleton configuration files as needed, restart your container, and you are on your way! (You can find the application.properties file with this message in the /WEB-INF/src/java/resources folder.)

org.suborg.not.null=Org [{0}] has sub org,can't be deleted!

 

    * 在struts.properties文件中为MessageResources.properties文件注册

  

struts.custom.i18n.resources=MessageResources

 

   * 在struts.xml文件中进行配置

  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="oa-default" extends="struts-default">
		<interceptors>
			<interceptor name="systemExceptionInterceptor"
				class="systemExceptionInterceptor" />
			<interceptor name="userPermissionInterceptor"
				class="userPermissionInterceptor" />
			<interceptor name="loginInterceptor"
				class="loginInterceptor" />
			<interceptor-stack name="mydefault">
				<!-- 把异常处理放在第一 -->
				
				<interceptor-ref name="defaultStack" />
				<interceptor-ref name="systemExceptionInterceptor" />
				<interceptor-ref name="loginInterceptor" />
				<interceptor-ref name="userPermissionInterceptor" />
			</interceptor-stack>
		</interceptors>
		<global-results>
			<result name="pub_del_success">
				common/pub_del_success.jsp
			</result>
			<result name="pub_add_success">
				common/pub_add_success.jsp
			</result>
			<result name="pub_update_success">
				common/pub_update_success.jsp
			</result>
			<result name="error">common/exception.jsp</result>
			<result name="login" type="redirect">/index.jsp</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping result="error"
				exception="java.lang.Exception">
			</exception-mapping>
		</global-exception-mappings>
	</package>

	<package name="main" extends="oa-default">
		<default-interceptor-ref name="mydefault" />

		<!-- OrgAction.java -->
		<action name="orgList" class="orgAction" method="orgList">
			<result name="success">org/index.jsp</result>
			<result name="select_org">org/select_org.jsp</result>
		</action>
		<action name="orgAddInput" class="orgAction"
			method="orgAddInput">
			<result name="success">org/add_input.jsp</result>
		</action>
		<action name="orgAdd" class="orgAction" method="orgAdd" />
		<action name="orgDel" class="orgAction" method="orgDel" />


		<!-- PersonAction.java -->
		<action name="personDel" class="personAction"
			method="personDel" />
		<action name="personAddInput" class="personAction"
			method="personAddInput">
			<result name="success">person/add_input.jsp</result>
		</action>
		<action name="personAdd" class="personAction"
			method="personAdd" />
		<action name="personUpdate" class="personAction"
			method="personUpdate" />
		<action name="personUpdateInput" class="personAction"
			method="personUpdateInput">
			<result name="success">person/update_input.jsp</result>
		</action>
		<action name="personList" class="personAction"
			method="personList">
			<result name="success">person/index.jsp</result>
		</action>


		<!-- ModuleAction.java -->
		<action name="moduleDel" class="moduleAction"
			method="moduleDel" />
		<action name="moduleAddInput" class="moduleAction"
			method="moduleAddInput">
			<result name="success">module/add_input.jsp</result>
		</action>
		<action name="moduleAdd" class="moduleAction"
			method="moduleAdd" />
		<action name="moduleUpdate" class="moduleAction"
			method="moduleUpdate" />
		<action name="moduleUpdateInput" class="moduleAction"
			method="moduleUpdateInput">
			<result name="success">module/update_input.jsp</result>
		</action>
		<action name="moduleList" class="moduleAction"
			method="moduleList">
			<result name="success">module/index.jsp</result>
		</action>


		<!-- RoleAction.java -->
		<action name="roleDel" class="roleAction" method="roleDel" />

		<action name="roleAddInput" class="roleAction"
			method="roleAddInput">
			<result name="success">role/add_input.jsp</result>
		</action>

		<action name="roleAdd" class="roleAction" method="roleAdd" />

		<action name="roleList" class="roleAction" method="roleList">
			<result name="success">role/index.jsp</result>
		</action>


		<!-- UserAction.java -->
		<action name="userDel" class="userAction" method="userDel" />
		<action name="userAddInput" class="userAction"
			method="userAddInput">
			<result name="success">user/add_input.jsp</result>
		</action>
		<action name="userAdd" class="userAction" method="userAdd" />
		<action name="userList" class="userAction" method="userList">
			<result name="success">user/index.jsp</result>
		</action>
		<action name="userUpdate" class="userAction"
			method="userUpdate" />
		<action name="userUpdateInput" class="userAction"
			method="userUpdateInput">
			<result name="success">user/update_input.jsp</result>
		</action>
		<action name="userRoleList" class="userAction"
			method="userRoleList">
			<result name="success">user/user_role_list.jsp</result>
		</action>
		<action name="userRoleInput" class="userAction"
			method="userRoleInput">
			<result name="success">user/user_role_input.jsp</result>
		</action>
		<action name="addUserRole" class="userAction"
			method="addUserRole" />
		<action name="delUserRole" class="userAction"
			method="delUserRole" />


		<!-- AclAction.java -->
		<action name="authorize" class="aclAction" method="authorize">
			<result name="success">acl/index.jsp</result>
		</action>


		<!-- IndexAction.java -->
		<action name="outlook" class="indexAction" method="outlook">
			<result name="success">/outlook.jsp</result>
		</action>
		<action name="main" class="indexAction" method="main">
			<result name="success">/main.jsp</result>
		</action>
	</package>



	<package name="login" extends="oa-default">
		<!-- LoginAction.java -->
		<action name="login" class="loginAction" method="login">
			<result name="success">/back_index.jsp</result>
		</action>
	</package>
</struts>

 

 

分享到:
评论

相关推荐

    Struts2异常处理机制

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

    Struts2之异常处理案例struts003

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

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

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

    struts2的异常处理机制

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

    struts2的异常处理

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

    struts手动异常处理

    2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`&lt;global-exception-mappings&gt;`...

    struts2中异常处理(demo)

    这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发中,异常是程序运行时遇到的问题,例如无效的用户输入、资源未找到或内部系统错误。Struts2...

    Struts1异常处理

    2. **Struts-config.xml配置异常处理**:在框架配置文件中,`&lt;global-exceptions&gt;`标签用于定义全局异常处理规则。例如: ```xml ``` 这段配置表示,如果任何地方抛出了`java.lang.Exception`或其子类,...

    Java_Jdbc_Hibernate_Struts2_Android_Web异常及其处理办法

    【Struts2异常处理】 Struts2是一个基于MVC(Model-View-Controller)架构的Web应用框架。它的异常处理主要通过全局异常映射器配置,可以将特定的异常映射到特定的结果页面或动作。通过`struts.xml`配置文件,...

    基于Struts的异常处理

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

    struts2处理项目全局异常

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

    Struts2的异常处理

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

    struts2+hibernate+sping综合

    8. **错误和异常处理**:定义全局的Struts2异常处理类,以及Spring的异常处理器,确保程序的健壮性。 通过SSH整合,开发者可以利用这三个框架的优势,实现高效的Web应用开发,提高代码的可维护性和复用性。在实际...

    struts1.x 异常处理机制

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

    Struts2中异常处理机制分析

    在Struts2中,异常处理机制是关键组成部分,确保程序在遇到错误时能够优雅地处理并提供反馈给用户。本文将深入探讨Struts2的异常处理机制,特别是声明式异常捕捉和异常映射。 首先,Struts2的异常处理机制允许...

    struts2 单文件,多文件上传及拦截器实现异常处理

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括表单处理、MVC设计模式支持以及异常处理机制。在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,...

    深入学习struts2

    8. **Struts2异常处理机制**:Struts2提供了一套强大的异常处理机制,允许开发者定义特定类型的异常与特定结果的映射。这样,当发生异常时,系统会自动转向预先配置的错误页面,便于统一处理和展示错误信息。 掌握...

    Struts 2权威指南--基于WebWork核心的MVC开发

    **4.5 Struts 2异常处理** 异常处理是任何Web应用开发中必不可少的一部分。这里将讨论如何使用Struts 2来处理异常,并给出示例。 #### 八、总结 通过以上章节的学习,我们可以看到Struts 2框架的强大之处,以及它...

Global site tag (gtag.js) - Google Analytics