设计模式:责任链
在struts中支持声明式的异常处理,指的是说action中如果出现异常了尽管往外抛,到最后我会给你一个统一的接口,然后让你在特定页面进行处理。
1.编写Action
package com.sxt.action; import java.sql.SQLException; import com.opensymphony.xwork2.ActionSupport; import com.sxt.model.User; public class UserAction extends ActionSupport{ private User user; public String login() throws SQLException{ /*因为我们使用了声明式的异常处理,所以在这里我们就不需要使用try-catch了,让action中的异常往外抛,使用 * struts的声明式的异常管理可以捕捉到该异常并进行相应的处理 */ user.setName("");//设置name为空字符串 if("".equals(user.getName())){ throw new SQLException(); } return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
2.配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.devMode" value="true"></constant> <package name="common" extends="struts-default"> <!--全局性result--> <global-results> <result name="global_error">/global_error.jsp</result> </global-results> <!--全局性的异常映射,该异常映射针对所有的Action--> <global-exception-mappings> <!--该result会先到对应的action配置下面对找,如果没找到,才会使用全局性result--> <exception-mapping result="global_error" exception="java.lang.Exception"></exception-mapping> </global-exception-mappings> </package> <package name="admin" namespace="/admin" extends="common" ><!--注意:继承了common--> <action name="userAction" class="com.bjsxt.action.UserAction" method="login"> <result>/admin/success.jsp</result> <result name="input">/admin/input.jsp</result> <!--局部性的: 异常映射,当该Action中一旦发生SQLException异常,会跳转到result指定的界面(在这里是error.jsp页面)。 该异常映射只针对该Action。 <exception-mapping result="error" exception="java.sql.SQLException" /> <result name="error">/error.jsp</result> --> </action> </package> </struts>
说明:一旦userAction抛出了异常,它就会在自己的包中找有没有配置异常映射,如果没有就会到父类的包中去找,在这里是common package,在common package中配置了全局性的异常映射和全局性的result
相关推荐
在Struts2中,声明式异常处理是其强大的特性之一,它允许开发者通过配置文件来定义不同类型的异常如何被处理,而不是在每个动作类中进行硬编码。这样可以提高代码的可读性和可维护性,同时也方便了异常处理策略的...
声明式异常处理和个性化异常处理是Struts框架中的两个重要特性,它们帮助开发者更有效地管理和处理应用程序可能出现的异常情况,从而提高应用的健壮性和用户体验。 声明式异常处理是Struts通过配置文件(如struts-...
Spring框架的声明式事务处理是Java企业级应用中不可或缺的一部分,它为开发者提供了一种方便、高效的方式来管理事务。在Spring中,事务管理分为编程式和声明式两种方式,而声明式事务处理则是通过配置来控制事务的...
在IT行业中,声明式事务处理是一种广泛应用于Java企业级应用中的技术,主要通过Spring框架来实现。相较于编程式事务管理,声明式事务处理更加简洁、易于维护,它将事务管理与业务逻辑解耦,使开发者可以专注于业务...
Struts2是一个强大的Java web开发框架,它提供了一种声明式异常处理机制,极大地简化了在应用程序中处理异常的方式。本示例代码旨在演示如何在Struts2中定义和使用声明式异常,以及如何访问异常属性。 声明式异常...
测试通常会模拟各种情况,如正常流程、异常处理、事务边界等,确保在不同场景下事务管理都能按预期工作。 总的来说,声明式事务处理是Spring框架的一大亮点,它极大地提高了代码的可读性和可维护性,降低了事务管理...
Spring框架的声明式事务处理是其企业级应用中的核心特性之一,它允许开发者通过配置来管理事务,而无需在代码中显式地控制事务的开始、提交和回滚。这种方式极大地提高了代码的可读性和可维护性。在这个"spring声明...
2. 声明式异常处理:介绍@ControllerAdvice、@ExceptionHandler等注解的用法,以及如何通过这些注解来定义全局的异常处理策略。 3. 编程式异常处理:讲解如何通过实现HandlerExceptionResolver接口来自定义异常...
1. 声明式异常处理:可以通过在控制器方法上使用`@ExceptionHandler`注解来指定特定异常的处理逻辑。这种方法适用于处理特定控制器内的异常。 2. 全局异常处理:为了统一处理所有控制器的异常,可以创建一个处理...
默认情况下,Spring使用编程式或声明式事务管理来控制事务的边界。如果在事务内发生DataAccessException,Spring会回滚事务,防止脏数据的产生。同时,开发者可以自定义事务的回滚规则,比如对特定异常不回滚或对非...
Spring框架的延迟加载和声明式事务处理是两个关键特性,它们极大地简化了企业级应用的开发。延迟加载允许在需要时才加载关联的对象,而声明式事务处理则使得事务管理更加自动化,无需在代码中显式处理。 在Spring与...
本文将深入探讨"spring+mybatis的声明式事务"这一主题,帮助你理解并掌握这一核心技术。 1. **Spring事务管理** Spring提供两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理通过编写代码来控制...
4. **异常处理**: 声明式事务管理基于异常驱动,当方法抛出未检查异常(继承自`RuntimeException`)或`Error`时,事务会自动回滚;而检查异常(非`RuntimeException`)则不会触发回滚,除非在注解中指定了`rollback...
总结来说,Spring的编程式和声明式事务管理为开发者提供了强大的工具来处理复杂的事务场景。编程式事务虽然灵活,但可能导致代码过于复杂;声明式事务则简化了事务管理,提高了代码的可读性和可维护性。选择哪种方式...
教程中的三个SWF文件08-1.swf、08-2.swf、08-3.swf可能包含了动画演示、交互式练习或示例代码,帮助学习者通过视觉和实践的方式理解异常处理的概念。这些文件可能讲解了以下几点: 1. 如何声明和抛出自定义异常。 2...
在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...
在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过在服务层方法上添加特定的注解来控制事务的边界,而无需编写大量的事务管理代码。这种方式使得业务逻辑和事务控制得以分离,...
声明式事务管理是通过配置(XML或注解)来管理事务,使得业务代码无需直接处理事务。在Spring中,主要有两种方式: 1. **基于XML的声明式事务管理**: 在Spring的配置文件中,我们可以通过`<tx:advice>`、`...