- 浏览: 213462 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
q10000000:
你好 适用madMadia点击上传到服务器 没有反应啊LZ
在项目中整合FCKeditor文本编辑器 -
liweixxxx1990:
spring本版是3.0的(和版本也有关系吗?) 配置用到了s ...
struts2+spring发送mail -
floger:
liweixxxx1990 写道我照着你这个写的出现了下面的错 ...
struts2+spring发送mail -
liweixxxx1990:
我照着你这个写的出现了下面的错误,怎么解决啊??:Messag ...
struts2+spring发送mail -
jueyue:
不错,把问题解决了
Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决
Struts2的异常处理机制: 任何成熟的MVC框架都应该提供成就的异常处理机制。Strut2也不例外。Struts2提供了一种声明式的异常处理方式。Struts2也是通过配置的拦截器来实现异常处理机制的。 Struts2的异常处理机制通过在struts.xml文件中配置﹤exception-mapping …﹥元素完成的,配置该元素时,需要指定两个属性: exception:此属性指定该异常映射所设置的异常类型。 result:此属性指定Action出现该异常时,系统转入result属性所指向的结果。 异常映射也分为两种: 局部异常映射:﹤exception-mapping…﹥元素作为﹤action…﹥元素的子元素配置。 全局异常映射:﹤exception-mapping…﹥元素作为﹤global-exception-mappings﹥元素的子元素配置。 输出异常信息: 使用Struts2的标签来输出异常信息: ﹤s:property value="exception.message"/﹥:输出异常对象本身。 ﹤s:property value="exceptionStack"/﹥: 输出异常堆栈信息。 利用struts2的异常处理机制和拦截器机制可以很方便的实现异常处理功能,你不再需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。 1. 在 struts.xml 文件中,声明全局异常映射,以及对应的全局异常转发如下所示:<interceptors> <interceptor name="exceptionManager" class="com.ufinity.lansin.admin.web.interceptor.ExceptionInterceptor"/> <interceptor-stack name="commonInterceptor"> <interceptor-ref name="exception" /> </interceptor-stack> </interceptors> <global-results> <result name="EXCEP_ERROR">/WEB-INF/templates/errorpage/Error.ftl</result> </global-results> <global-exception-mappings> <exception-mapping result="EXCEP_ERROR" exception="com.ufinity.lansin.exceptions.SystemException" /> </global-exception-mappings> 2.SystemException是异常处理类,代码如下所示: public class SystemException extends RuntimeException { private static final long serialVersionUID = 1L; public SystemException(String frdMessage) { super(createFriendlyErrMsg(frdMessage)); } public SystemException(Throwable throwable) { super(throwable); } public SystemException(Throwable throwable, String frdMessage) { super(throwable); } private static String createFriendlyErrMsg(String msgBody) { String prefixStr = "抱歉,"; String suffixStr = " 请稍后再试或与管理员联系!"; StringBuffer friendlyErrMsg = new StringBuffer(""); friendlyErrMsg.append(prefixStr); friendlyErrMsg.append(msgBody); friendlyErrMsg.append(suffixStr); return friendlyErrMsg.toString(); } } 3.WEB-INF/templates/errorpage/Error.ftl页面 这个页面很简单: ﹤body﹥ ﹤h2﹥ 出现异常啦 ﹤/h2﹥ ﹤hr/﹥ ﹤h3 style="color:red"﹥ ﹤!-- 获得异常对象 --﹥ ${exception.message?default("")} ﹤/h3﹥ ﹤br/﹥ ﹤!-- 异常堆栈信息(开发人员用) --﹥ ﹤div style="display:none;"﹥ ${exceptionStack?default("")} ﹤/div﹥ ﹤/body﹥ 4. 在拦截器中,捕获常见的异常,并以友好异常信息抛出,相关代码如下所示: public class ExceptionInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { String result = ""; try { result = invocation.invoke(); } catch (NoRightException ex) { throw new SystemException("没有权限操作,"); } catch (DataAccessException ex) { throw new SystemException("数据库操作失败,"); } catch (NullPointerException ex) { throw new SystemException("调用了未经初始化的对象或者是不存在的对象,"); } catch (IOException ex) { throw new SystemException("IO异常,"); } catch (ClassNotFoundException ex) { throw new SystemException("指定的类不存在,"); } catch (ArithmeticException ex) { throw new SystemException("数学运算异常,"); } catch (ArrayIndexOutOfBoundsException ex) { throw new SystemException("数组下标越界,"); } catch (IllegalArgumentException ex) { throw new SystemException("方法的参数错误,"); } catch (CacheEngineStartupException ex) { throw new SystemException("缓存引擎出现异常,"); } catch (CacheException ex) { throw new SystemException("缓存存取时出现异常,"); } catch (ConfigLoadException ex) { throw new SystemException("配置文件加载异常,"); } catch (DatabaseException ex) { throw new SystemException("数据库发生异常,"); } catch (FileNotFoundException ex) { throw new SystemException("文件未找到,"); } catch (IllegalOperationException ex) { throw new SystemException("您的操作是非法的,"); } catch (IllegalParameterException ex) { throw new SystemException("提交的参数非法,"); } catch (MailException ex) { throw new SystemException("邮件发送出现异常,"); } catch (NoObjectExistException ex) { throw new SystemException("你操作的对象已经不存在,"); } catch (ObjectExistException ex) { throw new SystemException("你操作的对象已经存在,"); } catch (SearchException ex) { throw new SystemException("搜索过程中发生异常,"); } catch (SearchInstantiationException ex) { throw new SystemException("搜索实例生成发生异常,"); } catch (ServiceException ex) { throw new SystemException("服务器发生异常,"); } catch (TemplateNotFoundException ex) { throw new SystemException("模板未找到,"); } catch (ClassCastException ex) { throw new SystemException("类型强制转换错误,"); } catch (SecurityException ex) { throw new SystemException("违背安全原则异常,"); } catch (SQLException ex) { throw new SystemException("操作数据库异常,"); } catch (NoSuchMethodError ex) { throw new SystemException("方法末找到异常,"); } catch (InternalError ex) { throw new SystemException("Java虚拟机发生了内部错误,"); } catch (Exception ex) { throw new SystemException("程序内部错误,操作失败,"); } return result; } }
评论
1 楼
topbox163
2011-08-01
捕获不到异常
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<package name="UsersModel" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="exceptionManager" class="com.sanss.meeting.web.ExceptionInterceptor" />
<interceptor-stack name="commonInterceptor">
<interceptor-ref name="exception" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="EXCEP_ERROR">wappush/jsp/common/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="EXCEP_ERROR" exception="com.sanss.meeting.web.SystemException" />
</global-exception-mappings>
<action name="usersAction" class="com.sanss.meeting.web.UsersAction">
<result name="login">wappush/jsp/wappushLogin.jsp</result>
<result name="success">wappush/jsp/manage.jsp</result>
<result name="success_usersList">wappush/jsp/usersList.jsp</result>
<result name="success_usersAdd">wappush/jsp/usersAdd.jsp</result>
<result name="success_usersUpdate">wappush/jsp/usersUpdate.jsp</result>
<result name="input">wappush/jsp/common/error.jsp</result>
<result name="error">wappush/jsp/common/error.jsp</result>
</action>
</package>
</struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml" />
<package name="UsersModel" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="exceptionManager" class="com.sanss.meeting.web.ExceptionInterceptor" />
<interceptor-stack name="commonInterceptor">
<interceptor-ref name="exception" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="EXCEP_ERROR">wappush/jsp/common/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="EXCEP_ERROR" exception="com.sanss.meeting.web.SystemException" />
</global-exception-mappings>
<action name="usersAction" class="com.sanss.meeting.web.UsersAction">
<result name="login">wappush/jsp/wappushLogin.jsp</result>
<result name="success">wappush/jsp/manage.jsp</result>
<result name="success_usersList">wappush/jsp/usersList.jsp</result>
<result name="success_usersAdd">wappush/jsp/usersAdd.jsp</result>
<result name="success_usersUpdate">wappush/jsp/usersUpdate.jsp</result>
<result name="input">wappush/jsp/common/error.jsp</result>
<result name="error">wappush/jsp/common/error.jsp</result>
</action>
</package>
</struts>
发表评论
-
struts2安全缺陷(下)
2010-10-18 15:05 1834struts2的taglib设计缺陷 ... -
Struts2安全缺陷(上)(转)
2010-10-18 15:03 1243本文介绍了java开发流行框架struts2以及web ... -
文件上传struts2 实现文件上传功能(4)
2009-08-22 15:34 11172、多文件上传修改action private Lis ... -
文件上传struts2 实现文件上传功能(3)
2009-08-22 15:32 829(三)使用struts2进行文件上传、下载 需引入两个jar包 ... -
文件上传struts2 实现文件上传功能(2)
2009-08-22 15:31 850(二)手动采用fileupload组建进行文件上传upload ... -
文件上传struts2 实现文件上传功能(1)
2009-08-22 15:29 754(一)从底层透析文件上传的实现,此时并没有介入struts21 ... -
struts2 中文乱码问题解决方法
2009-04-20 17:02 2460JAVA 中URL链接中文参数乱码的若干处理方法,现在整理收录 ... -
Struts2所有插件简介--目前到达40余种
2009-04-10 13:32 925今天无意查看了Struts2的插件时,发现已经林林总总有4 ... -
JSP中防止重复提交(Javascript)
2009-04-09 08:58 1683Struts2本身提供了重复提交的检查机制,但是我要的 ... -
Struts2中Session的使用
2009-04-03 14:52 694在Struts2里,如果需要在Action中使用ses ... -
Struts2中Session的使用
2009-03-30 12:17 844在Struts2里,如果需要在Action中使用ses ... -
struts2 session用法
2009-03-30 12:15 1812web.xml <?xml version=" ... -
Struts2 iterator标签集合中元素为数组的显示-关于数组和List之间相互转换的方法
2009-03-24 15:07 58671.List转换成为数组。(这里的List是实体是ArrayL ... -
[Struts 2.0]struts2的struts.properties配置文件详解
2009-03-20 12:07 721struts.action.extension ... -
struts2中用DOJO时间控件dropdowndatepicker
2009-03-18 16:27 3000在struts2中集成了对dojo的支持,这里以一个比较常用的 ... -
Struts 2 学习笔记:HelloWorld
2009-03-10 10:06 1053到写本文为止,Struts ...
相关推荐
Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...
下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** Struts2提供了内置的异常处理机制,允许开发者定义全局和局部的异常映射,以控制应用程序中出现异常时的行为。全局异常处理适用...
Struts2是一个流行的Java web框架,它提供了强大的异常处理机制,使得开发者能够优雅地管理和展示在应用程序中出现的错误和异常。以下是对Struts2异常处理机制的详细说明: 1. **异常处理流程**: 当一个Action...
- Struts2提供了一套完整的异常处理机制,允许开发者自定义错误页面和处理策略。 9. **Struts2的安全性** - 讨论Struts2的安全问题,如XSS和CSRF攻击,并学习如何通过配置和最佳实践来防范这些风险。 10. **实战...
Struts1提供了全局异常处理机制,允许开发者定义全局和特定Action的异常处理策略。 **10.Tiles框架集成** Tiles是Struts的一个扩展,允许创建可重用的页面布局组件,提高视图的复用性和可维护性。 通过本教程,...
2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`<global-exception-mappings>`...
尽管如此,许多遗留系统仍然依赖于Struts1,因此理解其异常处理机制仍然是必要的。 在Struts1中,异常处理主要通过两个组件来实现:`Action`类和`Tiles`或`Struts-config.xml`配置文件中的`exception`标签。当一个...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。...结合提供的压缩包文件"struts2_003",可能包含了示例代码或者项目结构,帮助读者理解并实践Struts2的异常处理机制。
总结来说,Struts1.x的异常处理机制包括全局异常配置和自定义Action异常处理两部分。通过合理利用这两种方式,开发者可以有效地控制和管理应用程序的异常,提供更健壮的错误处理,提高系统的稳定性和用户体验。在...
在Struts2框架中,异常处理是至关重要的一个部分,它确保了应用程序的稳定性和用户体验。Struts2提供了多种方式来捕获和处理异常,帮助开发者优雅地处理程序中的错误情况。以下是Struts2异常处理的四种主要方法,...
- Struts2提供了默认的拦截器栈,包含了一些常用的功能,如参数填充、异常处理等。 - **拦截器原理实现**: - 拦截器基于AOP(面向切面编程)思想实现。 - 当请求到达时,Struts2会根据配置找到相应的拦截器栈,...
总结一下,基于Struts的异常处理机制: 1. 定义自定义异常类,如`AppException`,包含错误代码和参数,方便处理和展示错误信息。 2. 创建自定义异常处理器,如`AppExceptionHandler`,继承自Struts提供的`...
Struts2的动作映射和结果处理机制可以很好地处理这些流程,而Spring则可以管理数据库连接和事务,确保数据操作的一致性。 7. **运行环境**:由于是“带lib可直接运行”的Demo,压缩包中可能包含了所有运行所需库...
- **Struts2**:提供了更强大的异常处理机制,可以定义全局和Action级别的异常映射,更易管理。 6. 数据校验: - **Struts1**:使用ActionForm中的Validate方法进行客户端或服务器端校验,需要编写大量重复代码。...
Struts2作为一款流行的Java Web框架,其异常处理机制是开发者必须掌握的关键部分。这篇博客主要探讨了在Struts2中如何有效地管理和处理异常,从而提高应用的稳定性和用户体验。 在Struts2中,异常处理主要通过两种...
Struts2包含了一些内置的拦截器,如`ValidationInterceptor`用于验证表单数据,`ExceptionHandlerInterceptor`处理异常等。开发者可以根据需求自定义拦截器,实现特定的行为,如登录检查、日志记录等。 4. **...
本篇文章将深入探讨Struts2的异常处理策略,以及如何在DAO层进行单元测试配置。 在传统的Web应用中,当一个异常发生时,通常会跳转到错误页面或者返回错误信息。但在现代Web应用中,尤其是涉及到Ajax异步请求时,...
2. **全局异常处理**:在struts-config.xml中,我们可以定义全局的异常映射(global-exceptions)。当Action执行过程中抛出未被捕获的异常时,Struts会查找匹配的异常映射,根据配置转发到特定的错误页面。例如,...