- 浏览: 1493293 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (460)
- java (148)
- javascript (34)
- Flex文章 (4)
- css+div (2)
- ajax (6)
- extjs (11)
- 人生感悟 (9)
- struts2.0 (6)
- IT之路,生活 (15)
- hibernate (6)
- struts1 (1)
- spring (5)
- j2ee错误 (3)
- Dwr (5)
- Linux (33)
- C++ (3)
- SWT Win32 (2)
- EJB (1)
- JPA (4)
- C语言和LinuxC (7)
- SQL (13)
- 项目经理 (6)
- db2 (2)
- java数据结构 (2)
- 网页播放器flv (1)
- 数据库 (24)
- 用户体验设计学习 (2)
- 网络电话 (5)
- 军事理论 (4)
- android (3)
- oracle (18)
- oracle ebs form (11)
- oracle ebs oaf (4)
- erp (20)
- DBA (9)
- java中URL 的编码和解码函数 (1)
- 铁血丹心 (1)
- excel 单元格格式不能立即生效 (1)
- Java调用bat文件 (1)
- 如何把本地outlook中的邮件上传到网络邮箱中 (1)
- java 报表 打印 (1)
- 创建dblink (1)
- 图标前台框架 (1)
- vnc (1)
- FORM (1)
- MYSQL (1)
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
web打印不显示页眉页脚 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
Javascript网页打印大全 -
hardyer:
大哥写的很实在,受教了,提前祝你元旦快乐!
黎活明给程序员的忠告 -
cxysilahi:
请问WIN7 64位,调用报错Exception in thr ...
JNative的初步使用 -
action1949:
好东西,解决问题
JFreeChart乱码解决方法
任何成熟的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中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。
eg1:
public class Struts2Exception extends ActionSupport{ private static final long serialVersionUID = -87324321702425020L; private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() throws Exception{ // if("logo".equals(getUsername())){ // return SUCCESS; // }else{ // throw new SQLException("用户名不正确"); // } throw new java.lang.Exception("系统错误"); } }
<?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="aa" extends="struts-default">
<global-exception-mappings>
<exception-mapping result="all" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="execptionTest" class="com.dingxun.exception.Struts2Exception">
<result name="success">/exception/result.jsp</result>
<exception-mapping result="sql" exception="java.sql.SQLException"/>
<exception-mapping result="null" exception="java.lang.NullPointerException"/>
<result name="sql">/exception/sql.jsp</result>
<result name="null">/exception/null.jsp</result>
<result name="all">/exception/all.jsp</result>
</action>
</package>
</struts>
上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常
当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp
可以使用Struts2的标签来输出异常信息
<s:property value="exception.message"/>
<s:property value="exceptionStack"/>
例如sql.jsp页面
<body>
<s:property value="exception.message"/>
</body>
可以输出 用户名密码不正确
1. 在 struts.xml 文件中,声明全局异常映射,以及对应的全局异常转发如下所示:
﹤global-results﹥
﹤result name="error"﹥/admin/error/ErrDisplay.ftl﹤/result﹥
﹤/global-results﹥
﹤global-exception-mappings﹥
﹤exception-mapping result="error" exception="com.orizone.hbmobile.hbcm.struts.BusinessException"﹥﹤/exception-mapping﹥
BusinessException 是异常处理类,代码如下所示:
public class BusinessException extends RuntimeException
{
private static final long serialVersionUID = 0xc1a865c45ffdc5f9L;
public BusinessException(String frdMessage)
{
super(createFriendlyErrMsg(frdMessage));
}
public BusinessException(Throwable throwable)
{
super(throwable);
}
public BusinessException(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();
}
}
2. /admin/error/ErrDisplay.ftl 页面
这个页面很简单:
﹤body﹥
﹤h2﹥
出现异常啦
﹤/h2﹥
﹤hr/﹥
﹤h3 style="color:red"﹥
﹤!-- 获得异常对象 --﹥
${exception.message?default("")}
﹤/h3﹥
﹤br/﹥
﹤!-- 异常堆栈信息(开发人员用) --﹥
﹤div style="display:none;"﹥
${exceptionStack?default("")}
﹤/div﹥
﹤/body﹥
﹤body﹥
﹤h2﹥
出现异常啦
﹤/h2﹥
﹤hr/﹥
﹤h3 style="color:red"﹥
﹤!-- 获得异常对象 --﹥
${exception.message?default("")}
﹤/h3﹥
﹤br/﹥
﹤!-- 异常堆栈信息(开发人员用) --﹥
﹤div style="display:none;"﹥
${exceptionStack?default("")}
﹤/div﹥
﹤/body﹥
3. 在拦截器中,捕获常见的异常,并以友好异常信息抛出,相关代码如下所示:
public String intercept(ActionInvocation invocation) throws Exception
{
before(invocation);
String result = "";
try{
result = invocation.invoke();
}catch(DataAccessException ex){
throw new BusinessException("数据库操作失败!");
}catch(NullPointerException ex){
throw new BusinessException("调用了未经初始化的对象或者是不存在的对象!");
}catch(IOException ex){
throw new BusinessException("IO异常!");
}catch(ClassNotFoundException ex){
throw new BusinessException("指定的类不存在!");
}catch(ArithmeticException ex){
throw new BusinessException("数学运算异常!");
}catch(ArrayIndexOutOfBoundsException ex){
throw new BusinessException("数组下标越界!");
}catch(IllegalArgumentException ex){
throw new BusinessException("方法的参数错误!");
}catch(ClassCastException ex){
throw new BusinessException("类型强制转换错误!");
}catch(SecurityException ex){
throw new BusinessException("违背安全原则异常!");
}catch(SQLException ex){
throw new BusinessException("操作数据库异常!");
}catch(NoSuchMethodError ex){
throw new BusinessException("方法末找到异常!");
}catch(InternalError ex){
throw new BusinessException("Java虚拟机发生了内部错误");
}catch(Exception ex){
throw new BusinessException("程序内部错误,操作失败!");
}
after(invocation, result);
return result;
}
﹤/global-exception-mappings﹥
发表评论
-
Oracle Developer10G 安装
2020-09-09 18:03 394oracle 客户端也要删除,以前的oracle产品 ... -
打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion
2018-06-05 15:06 9818打开Eclipse时出现"The Eclipse ... -
J2EE通过tomcat部署的两种方式
2017-09-12 09:01 704转载:http://blog.csdn.net/psp000 ... -
Linux安装Tomcat7
2016-03-30 15:01 908http://blog.sina.com.cn/s/blog ... -
java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)
2015-11-17 22:10 1654http://blog.csdn.net/flyingclo ... -
栋哥涕啐茆
2015-10-27 10:49 794栋哥涕啐茆 -
Eclipse快捷键 10个最有用的快捷键
2015-10-27 10:18 824Eclipse中10个最有用的快捷键组合 一个Eclip ... -
java上传头像图像剪切
2015-04-02 20:19 1207java上传头像图像剪切 JQUERY 图片上传裁切 -
创建dblink
2014-12-11 20:01 717CREATE public database link ... -
Bitnami Redmine 安装笔记
2014-12-10 11:28 1685http://atian25.iteye.com/blog/ ... -
利用workflow发送类似数据报表内容的通知页面
2014-11-21 15:03 850利用workflow发送类似数据报表内容的通知页面 ... -
excel科学技术法问题
2014-11-12 13:50 8711.使用导入外部数据的方法2.并且在第三步的时候选择文本,需要 ... -
java.lang.IllegalAccessError
2014-09-29 11:05 1211java.lang.IllegalAccessError: ... -
java如何获取文件编码格式
2014-04-11 11:28 102771:简单判断是UTF-8或不是UTF-8,因为一般除了UTF ... -
JAVA中使用FTPClient上传下载
2013-12-08 13:35 1956方法一:这种方法网上有许多 可以用下面的方式,但是支持批量 ... -
在Java中获取环境变量
2013-11-11 11:18 1476package cy.cn.test; import ... -
ORACLE性能调整笔记
2013-11-05 18:39 0一 关于statspack中等待事件的一些解释 ... -
EBS DBA指南笔记1
2013-11-05 18:35 1942时光飞逝,不从事EBS DBA转眼已有两年多。很还念那段学习 ... -
用html代码在word中插入分页符和页面设置
2013-11-05 17:11 5379<span lang=EN-US style=&quo ... -
OpenJWeb新增二维码图片生成功能
2013-11-05 09:02 1315在开发进销存软件的时 ...
相关推荐
Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...
Struts2是一个流行的Java web框架,它提供了强大的异常处理机制,使得开发者能够优雅地管理和展示在应用程序中出现的错误和异常。以下是对Struts2异常处理机制的详细说明: 1. **异常处理流程**: 当一个Action...
下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** Struts2提供了内置的异常处理机制,允许开发者定义全局和局部的异常映射,以控制应用程序中出现异常时的行为。全局异常处理适用...
2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`<global-exception-mappings>`...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。...结合提供的压缩包文件"struts2_003",可能包含了示例代码或者项目结构,帮助读者理解并实践Struts2的异常处理机制。
尽管如此,许多遗留系统仍然依赖于Struts1,因此理解其异常处理机制仍然是必要的。 在Struts1中,异常处理主要通过两个组件来实现:`Action`类和`Tiles`或`Struts-config.xml`配置文件中的`exception`标签。当一个...
总结来说,Struts1.x的异常处理机制包括全局异常配置和自定义Action异常处理两部分。通过合理利用这两种方式,开发者可以有效地控制和管理应用程序的异常,提供更健壮的错误处理,提高系统的稳定性和用户体验。在...
在Struts2框架中,异常处理是至关重要的一个部分,它确保了应用程序的稳定性和用户体验。Struts2提供了多种方式来捕获和处理异常,帮助开发者优雅地处理程序中的错误情况。以下是Struts2异常处理的四种主要方法,...
总结一下,基于Struts的异常处理机制: 1. 定义自定义异常类,如`AppException`,包含错误代码和参数,方便处理和展示错误信息。 2. 创建自定义异常处理器,如`AppExceptionHandler`,继承自Struts提供的`...
本篇文章将深入探讨Struts2的异常处理策略,以及如何在DAO层进行单元测试配置。 在传统的Web应用中,当一个异常发生时,通常会跳转到错误页面或者返回错误信息。但在现代Web应用中,尤其是涉及到Ajax异步请求时,...
8. **Struts2异常处理机制**:Struts2提供了一套强大的异常处理机制,允许开发者定义特定类型的异常与特定结果的映射。这样,当发生异常时,系统会自动转向预先配置的错误页面,便于统一处理和展示错误信息。 掌握...
Struts2包含了一些内置的拦截器,如`ValidationInterceptor`用于验证表单数据,`ExceptionHandlerInterceptor`处理异常等。开发者可以根据需求自定义拦截器,实现特定的行为,如登录检查、日志记录等。 4. **...
ActionSupport类提供了错误和异常处理的基础支持,包括国际化和验证。每个Action可以通过返回一个字符串结果来指示视图层如何响应,这被称为结果类型。 在处理请求的过程中,Struts2使用了拦截器(Interceptor)...
Struts2作为一款流行的Java Web框架,其异常处理机制是开发者必须掌握的关键部分。这篇博客主要探讨了在Struts2中如何有效地管理和处理异常,从而提高应用的稳定性和用户体验。 在Struts2中,异常处理主要通过两种...
2. **全局异常处理**:在struts-config.xml中,我们可以定义全局的异常映射(global-exceptions)。当Action执行过程中抛出未被捕获的异常时,Struts会查找匹配的异常映射,根据配置转发到特定的错误页面。例如,...
在Struts2中,异常处理机制是关键组成部分,确保程序在遇到错误时能够优雅地处理并提供反馈给用户。本文将深入探讨Struts2的异常处理机制,特别是声明式异常捕捉和异常映射。 首先,Struts2的异常处理机制允许...
Struts2的令牌机制是其防止重复提交和CSRF(跨站请求伪造)攻击的一种重要安全策略。在Web开发中,尤其是使用MVC框架如Struts2时,确保用户请求的唯一性和安全性至关重要。令牌机制就是这样的一个工具,它通过在表单...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括表单处理、MVC设计模式支持以及异常处理机制。在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,...