- 浏览: 898573 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (537)
- Java SE (114)
- Struts (18)
- Hibernate (25)
- Spring (3)
- Page_Tech (41)
- Others (87)
- Database (29)
- Server (24)
- OpenSource_Tools (15)
- IDE_Tool (22)
- Algorithm (28)
- Interview (22)
- Test (28)
- Hardware (1)
- Mainframe (25)
- Web application (4)
- Linux (3)
- PHP (17)
- Android (1)
- Perl (6)
- ubuntu (1)
- Java EE (9)
- Web Analysis (5)
- Node.js (2)
- javascript (2)
最新评论
-
一键注册:
request.getRequestURL()和request.getRequestURI() -
SuperCustomer:
...
SED的暂存空间和模式空间 -
juyo_ch:
讲得挺好理解的,学习了
java 死锁及解决 -
chinaalex:
最后一题答案正确,但是分析有误.按照如下过程,上一行为瓶,下一 ...
zz智力题 -
liaowuxukong:
多谢博主啦,弱弱的了解了一点。
C++/Java 实现多态的方法(C++)
在Struts1.X的版本中加入了对异常的处理,Exception Handling,有了它就不需要我们用try/catch等捕获异常,一旦出现了我们已经定义的异常那么就会转到相应得页面,并且携带定制的信息。STRUTS框架提供了默认的异常处理org.apache.struts.action.ExceptionHandler,他的execute()方法负责处理异常。在需要实现自定义处理时重写方法,可以在配置文件定义由谁来处理Action类中掷出的某种异常。
Struts框架处理异常的流程
struts的控制器负责捕获各种异常,包括控制器运行中本身抛出的异常,以及调用模型的业务方法时抛出的异常。当struts的控制器捕获到异常后,在异常处理代码块中,创建描述信息的actionmessage对象把它保存在acionmessages(或其子类actionerrors)对象中,然后把ACTIONMESSAGES保存在特定范围(配置文件中的scope)。然后可以用<html:errors>检索特定范围内的actionmessages对象。
下面是一个全局的处理类的例子:
首先介绍<global-exception>元素:
<global-exceptions>//元素可以包含一个或者多个<exception>元素
<exception
className=""//指定和元素对应的配置类,默认的不用动
bundle=""//Resource Bundle
key="..." // <message-resources parameter="MessageResources" />中的key
type="java.lang.Exception"//指定需要处理异常类的名字,必须
handler="com.myHander.SystemExceptionHandler"指定异常处理类默认是ExceptionHandler,
path="/pub_exception.jsp"//指定当前异常发生的时候转发的路径
scope="request"//指定ActionMessages实例存放的范围
......
>
</exception>
</global-exceptions>
2,定义自己的异常类:SystemException
package com.ex;
public class SystemException extends RuntimeException {
private String key;//得到本地资源文件key
private Object[] values;
public SystemException() {
super();
}
public SystemException(String message, Throwable arg1) {
super(message, arg1);
}
public SystemException(String message) {
super(message);
}
public SystemException(Throwable message) {
super(message);
}
public SystemException(String key,String message, Throwable arg1) {
super(message, arg1);
this.key = key;
}
public SystemException(String key,Object value) {
super();
this.key = key;
values = new Object[]{value};
}
public SystemException(String key,Object value1,Object value2) {
super();
this.key = key;
values = new Object[]{value1,value2};
}
public SystemException(String key,Object[] values) {
super();
this.key = key;
this.values = values;
}
public String getKey() {
return key;
}
public Object[] getValues() {
return values;
}
}
定义自己的异常类处理类:SystemExceptionHandler,extendExceptionHandler,覆盖execute方法,处理自己的异常类,其他的异常有父类自己处理
package com.ex;
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 com.ex.SystemException;
public class SystemExceptionHandler extends ExceptionHandler {
@Override
public ActionForward execute(Exception ex, ExceptionConfig ae,
ActionMapping mapping, ActionForm formInstance,
HttpServletRequest request, HttpServletResponse response)
throws ServletException {
ActionForward forward = null;
ActionMessage error = null;
String property = null;
if (ae.getPath() != null) {//配置文件中的path
forward = new ActionForward(ae.getPath());
} else {
forward = mapping.getInputForward();//如果没有找到path,转到input配置的路径
}
this.logException(ex);
//处理自定义的异常类SystemException
if(ex instanceof SystemException){
SystemException se = (SystemException)ex;
//如果只有message,而没有key
if(se.getKey() == null){
error = new ActionMessage(ae.getKey(), ex.getMessage());
property = ae.getKey();
}else{ //SystemException中有key值
error = new ActionMessage(se.getKey(),se.getValues());
property = se.getKey();
}
request.setAttribute(Globals.EXCEPTION_KEY, ex);
this.storeException(request, property, error, forward, ae.getScope());
return forward;
}
return super.execute(ex, ae, mapping, formInstance, request, response);
}
}
struts-config.xml中配置:
<global-exceptions>
<exception
type="java.lang.Exception"
handler="com.ex.SystemExceptionHandler"
path="/pub_exception.jsp"
scope="request"
>
</exception>
</global-exceptions>
3,pub_exception.jsp页面;
获得异常:<html:errors/>//当然:引入<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
4,测试:TestHander(业务逻辑类)
package com.ex;
import com.ex.SystemException;
public class TestHander {
public void test(int t){
if(t>2){
throw new SystemException("不能大于2!");
//或者throw new SystemException("testkey",t);调用SystemException中的SystemException(String key,Object value) 构成方法得到资源文件定义的信息,当然 在MessageResources.properties文件里加上testkey= {0} con't greater than 2!当然还要加上 <message-resources parameter="MessageResources" />
}
}
}
5,Action类:调用TestHander的test方法:
(主要代码) new TestHander().test(3);
6,jsp调用acyion页面页面:
<a href="testhander.do">异常</a>
一点击就会转向pub_exception.jsp页面显示:不能大于2!
发表评论
-
struts1 vs struts2
2012-06-07 10:55 1035struts1 2001年6月发布str ... -
struts中通过action跳转到外网(框架页面)
2010-04-26 16:26 2274HttpSession session = arg2.getS ... -
Struts+spring, 多模块Struts配置文件
2010-01-13 10:41 11401. web.xml ... <init-param&g ... -
struts1.2多模块开发
2010-01-13 10:24 1436一、多个配置文件的支持和模块的支持支持多个配置文件,是指你能够 ... -
struts1.2与spring整合手记
2010-01-12 16:51 1036相关文章: spring入门编程问题集锦 ... -
Struts action mapping (controller的inputforward属性)
2010-01-12 16:22 31011. Full action 这可以说是Struts ac ... -
Struts1.2 控制流程----面试时可用
2010-01-12 15:34 1049有的同学问我如何向面 ... -
深入Struts1.1(下)
2010-01-12 15:21 961在Struts 1.1中,除了DynaActionForm以外 ... -
深入Struts1.1(中)
2010-01-12 15:19 733ActionServlet 我们首先来 ... -
深入Struts 1.1(上)
2010-01-12 15:18 876作为基于MVC模式的Web应 ... -
struts1.x执行流程分析
2010-01-12 14:49 1429先来整体的了解一下Struts的工作流程. 在实现一个基于S ... -
一步一步学习 Struts
2009-11-05 16:22 789专栏: 一步一步跟我学Struts2 (17) 如何学习S ... -
Struts2 OGNL
2009-11-05 15:27 1240众所周知,Strut 2的Action类通过属性可以获得所有相 ... -
struts2验证信息重复出现解决方案
2009-10-17 10:33 1240今天遇到一个很蠢的问题,所以写下来给自己留个教训。 ... -
STRUTS2.0影射REST风格地址
2009-10-14 14:40 1037[摘要]: 介绍如何改写Struts2的Restful2Act ... -
strust2标签实践总结
2009-10-06 00:42 14021:输出action中属性值,在jsp页面中显示用:<s ... -
关于Spring , Struts结合学习
2009-09-30 13:28 847关于Spring , Struts结合学习。 一、前言 刚 ...
相关推荐
通过定义继承RuntimeException的异常类及继承ExceptionHandler的异常处理类,手动从dao层捕获异常。非常实用!
当应用程序中发生异常时,Spring会自动调用该方法来处理异常。这种方法适用于在全局范围内处理所有类型的异常。 总之,全局异常统一处理是一种在Java中实现集中式异常处理的模式。它有助于简化代码和提高代码的...
在全局异常处理器中,可以使用 @ExceptionHandler 注解指定要处理的异常类型,并编写相应的处理逻辑。 通过使用 @ControllerAdvice 和 @ExceptionHandler,可以将异常处理逻辑集中到一个地方,避免了在每个控制器中...
iOS异常捕捉提示,发送邮件及写入异常日志。 提供 断言, 错误的具体位置(类名及行数)、所有异常报告内容、及异常报告文件路径接口。 并统一展示 异常日志 。
ExceptionHandler:json格式的处理程序异常
iOS异常捕捉提示,发送邮件及写入异常日志。 提供 断言, 错误的具体位置(类名及行数)、所有异常报告内容、及异常报告文件路径接口。 并统一展示 异常日志 。
spring mvc统一处理异常,通过@ControllerAdvice+@ExceptionHandler
Android 测试捕获全局异常消息ExceptionHandler用法,我自己测试抛出一个异常,thread为未捕获异常的线程, e为未捕获的异常,收集当前的手机信息,捕获手机当前的异常信息,然后写入异常信息到文件中,最后使用 ...
1.使用自定义错误页面处理异常案例 2.使用 @ExceptionHandler 注解处理异常案例 3.使用 @ControllerAdvice 注解处理异常案例 4.使用配置类处理异常案例 5.使用自定义类处理异常案例
SSM笔记-SpringMVC的异常处理,包含了ExceptionHandler注解、ResponseStatusExceptionResolver、DefaultHandlerExceptionResolver、SimpleMappingExceptionResolver的使用和试验
Disruptor报错FatalExceptionHandler的解决办法,看网上这种解决办法挺少,整理了一下,分析了一下Dsiruptor的源码,并给出了解决方案
如果要使用默认异常处理程序的呈现功能,但又要使用第三方异常处理程序中的报告逻辑,则此功能很有用。 通常可以通过添加另一个Monolog处理程序来扩展报告逻辑,但是所有异常都将被打包为字符串,这并不总是可行的...
Spring Boot中的异常处理(主要是管理Web API返回的状态码和描述) 定义Exceptin类发生异常时的行为 如果发生 OrderNotFoundException,将返回状态代码 404。 定义Controller类发生异常时的行为 在 ...
博主看到新服务是封装的自定义异常,准备入手剖析一下,...第一步:肯定是在Springboot启动的过程中进行的异常处理初始化,于是就找到了handlerExceptionResolver类,在创建该类的时候,会进行添加我们自定义异常。
在本系列文章的第一部分里,我们讨论了异常发生时,该返回给 REST API 调用者的异常表示(格式)的佳实践。 在本文(第二部分)中... HandlerExceptionResolvers 对于用一种统一的方法来处理异常来说非常的理想,
当程序中发生未处理的异常时提供帮助的库。 发生错误时自动向您的 Android 手机发送通知。 还提供了向手机发送信息、警告等通知的方法(不仅限于例外) 目前支持Java和Python 。 这个库更适合自动化脚本/程序或...
这篇文章的目的就在于帮助你更好的了解异常机制,并在你的C++程序中更好更有效的利用它。 这篇文章附带了一个小控制台程序ExceptionHandler作为例子,这一个例子能产生和捕获各种不同的异常,并且能生成一个崩溃时的...
1.新建GlobalExceptionHandler 全局异常处理类 @ControllerAdvice @ResponseBody public class GlobalExceptionHandler { /** * 处理MyException异常 */ @ExceptionHandler(MyException.class) public ...
自定义错误处理首先,您将在此代码中找到一个使用@RestControllerAdvice和@ExceptionHandler方法将异常映射到Spring Boot中的状态代码的基本方法示例。 但是,最有趣的部分是注入自定义的ErrorController实现和重写...
Laravel开发-exception_handler Laravel 5网站的异常处理程序。