一,局部exception

把action中产生的异常配置到struts-config.xml中,哪个action出现异常就在哪个action的配置中进行配置。

<action path="/login"
    type="com.bjsxt.struts.LoginAction"
    name="loginForm"
    scope="request"
    validate="false"
    input="/login.jsp"
  > 
  <!--
   <exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
   <exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
   --> 
   <forward name="success" path="/login_success.jsp"/>
   <forward name="error" path="/login.jsp"/>
  </action>

exception中key表示的是国际化中对应的信息

type表示的是异常类

handler表示自定义的异常处理方式

如果要让出现异常后自动跳转到某页面,则在Action中配置属性input,或者在exception中添加path属性,其优先级高于Action中的input。

二,全局exception

<global-exceptions>
 <!--
   <exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
   <exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
  -->
 
  <!--
  <exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" handler="org.apache.struts.action.ExceptionHandler"/>
  <exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" handler="org.apache.struts.action.ExceptionHandler"/>
  -->
 
  <!--
  <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException" handler="com.bjsxt.struts.ErrorCodeExceptionHandler"/>
   -->
   <!--
   <exception key="error.exception" type="com.bjsxt.struts.AppException" handler="com.bjsxt.struts.AppExceptionHandler"/>
    --> 
  
   <exception key="error.exception" type="com.bjsxt.struts.AppException"/>
 </global-exceptions>

三,struts实现声明式异常的方式

如果Action中出现异常,会被Action中的异常捕获并向上抛出异常,而该异常会被struts中,调用processException()方法处理异常,使用反射查找配置的异常,如果没有配置那么就判断是否是IOException异常或者是ServletException异常,如果不是抛到web容器中,如果在web.xml中配置了该异常的处理方式,那么就处理如果没有配置那么就直接显示到页面;如果在struts中配置了,那么就按照配置的处理,struts创建handler类来处理配置的异常。

转载于:https://www.cnblogs.com/jinzhengquan/archive/2011/02/15/1955124.html

struts声明式异常相关推荐

  1. Struts 声明式异常处理和个性化异常处理(转)

    首先我们的国际化资源文件中有 user.not.found = 用户不能找到,用户名称=[{0}] user.password.error = user.password.error 第一种 声明式异 ...

  2. mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚

    mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚 参考文章: (1)mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚 (2)https://www.cnblog ...

  3. 【spring】spring基于xml的声明式事务控制

    结构 domain package com.itheima.domain;import java.io.Serializable;public class Account implements Ser ...

  4. SpringCloud Feign声明式服务调用

    SpringCloud Feign声明式服务调用 1. 加入pom依赖 2. Application.java上声明@EnableFeignClients 3. @FeignClient声明接口调用服 ...

  5. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

  6. spring 声明式事务

    Spring给了一个约定(AOP开发也给了我们一个约定),如果使用的是声明式事务,那么当你的业务方法不发生异常(或者发生异常,但该异常也被配置信息允许提交事务)时,Spring就会让事务管理器提交事务 ...

  7. 8.Spring整合Hibernate_2_声明式的事务管理(Annotation的方式)

    声明式的事务管理(AOP的主要用途之一) (Annotation的方式) 1.加入annotation.xsd 2.加入txManager bean 3.<tx:annotation-drive ...

  8. 功能性,声明式和命令式编程[关闭]

    功能,声明和命令式编程这两个术语是什么意思? #1楼 命令式 - 表达式描述要执行的动作序列(关联) 声明性 - 表达式是有助于程序行为的声明(关联,交换,幂等,单调) 功能 -词汇具有值作为唯一的影 ...

  9. SpringMVC、MyBatis声明式事务管理

    2019独角兽企业重金招聘Python工程师标准>>> 采用的基本搭建环境:SpringMVC.MyBatis.MySQL.tomcat         Spring事务管理分解了传 ...

最新文章

  1. 使用git上传代码到github
  2. Pandas进阶修炼120题,给你深度和广度的船新体验
  3. html网页滚轮滑动页面,JQuery实现鼠标滚轮滑动到页面节点
  4. MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)
  5. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_关于TCP/IP,必知必会的十个问题!...
  6. [基础题] 7.第二种(*)按如下要求编写Java程序:
  7. Hadoop阅读笔记(四)——一幅图看透MapReduce机制
  8. .net session超时设置 sessionState的相关属性
  9. shell 除法保留n位小数
  10. Android的代码同步repo
  11. 王道考研计算机网络笔记目录
  12. matlab信号加入白噪音再分离,Matlab中给信号增加白噪声
  13. java date获取24点_获取0点和24点时间戳的方式
  14. 虚拟机VMware安装ubuntu教程
  15. 【Leetcode】1925. Count Square Sum Triples
  16. 储物点的距离【前缀和】
  17. 移动端开发rem实现屏幕适配及处理页面加载页面坍塌样式错乱网页闪烁问题
  18. FAST-LIO2代码解析(一)
  19. Cadence LDO capless 电路,包括版图,已通过lvs ,drc检查,个人流片过,包括偏置全电路
  20. This application is currently offline解决办法

热门文章

  1. wdcp+定时运营php_豪侠汇 | 本地商家智能运营方案支持,周周聚餐,每12月调薪机会!...
  2. 心动警告!你有一份礼包待领取→
  3. 页面浏览事件之 $AppViewScreen 全埋点
  4. haproxy1.8安装配置
  5. java中执行js代码
  6. 网曝 Solaris 系统被砍,开发团队将大半被解雇
  7. LINUX_egrep及扩展正则表达式
  8. java运行环境(JRE)
  9. Android adb.exe程序启动不起来处理方法
  10. 成长型公司的存储架构