一、异常的分类

 1.1  struts中的异常概念

  • Struts的声明式异常: 不处理异常,将异常交给struts框架来处理。

 1.2 局部异常

  • 局部异常:异常定义在Action里,异常处理只在这个Action中有效,其他action如果出现了异常则无法处理到。
  • struts.xml 中《action》的子标签<exception-mapping result="" exception=""></exception-mapping>异常映射可以用来处理异常,如果产生异常可以将用户引导到异常处理页面。其中result表示异常处理页面的名称,与result标签一起用。exception表示异常的类型,比如java.io.FileNotFoundException这是文件没有找到时的异常类型。
  • 示例:
    <package name="default" namespace="/exception" extends="struts-default">
<action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result> <exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<result name="error_1">/error_1.jsp</result> </action>
</package>

解析: 当URL=“工程名/exception/exception_1”的时候,执行ErrorAction类对象,如果这个Action正确执行,则跳转到index_2.jsp这个页面,如果出现了文件没有找到异常(java.io.FileNotFoundException),就把跳转到<result>标签中的的error_1.jsp页面。

  • 一般来说,如果页面可能产生的异常比较多的时候,在struts.xml中异常映射就需要定义很多个,此时可以先定义几个具体的异常,然后对于其他异常可以合在一起处理,即

<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>

  • 示例:
 <package name="default" namespace="/exception" extends="struts-default">
<action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result> <exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
<result name="error_1">/error_1.jsp</result>
<result name="error_2">/error_2.jsp</result>
<result name="error_common">/common.jsp</result>
</action>
</package>

解析:  如果Action出现java.io.FileNotFoundException或者java.lang.ArithmeticException错误,就会跳转到相应的页面,如果不是这两个异常,则跳转到common.jsp页面。

  • 注意: 如果Action里有多个异常,那么当发现第一个异常的时候,就会跳转异常处理页面,这个Action接下去的异常将不会处理。

  1.2  全局异常

  • 定义在package里,使用<global-exception-mappings>,这个package里的所有action都可以使用。其他包要想使用,继承这个包即可。
   <package name="default" namespace="/exception" extends="struts-default">
<global-results>
<result name="error_1">/error_1.jsp</result>
<result name="error_2">/error_2.jsp</result>
<result name="error_common">/common.jsp</result>
</global-results> <global-exception-mappings>
<exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings> <action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result>
</action>
</package>
  • 注意:1.<global-exception-mappings> 标签里不能定义<result name=""></result>

      2.<global-results> 要定义在<global-exception-mappings>之前。

      3.<global-exception-mappings>里的<result>对应的是<global-results>里的<result>里的name。

(六)Struts的简单异常处理的更多相关文章

  1. 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL

    本节又带了一些常用的,却很难理解的问题,本节从文件上传功能的实现引出了线程使用,介绍了线程饥饿的解决方法,异常处理方法,了解RouteTable自定义路径 . 系列文章 七天学会ASP.NET MVC ...

  2. struts中简单的校验

    Struts中简单的校验 “计应134(实验班) 凌豪” Struts2校验简要说明:struts2中通常情况下,类型转换要在数据校验之前进行.类型转换其实也是基本的服务器端校验,合法数据必然可以通过 ...

  3. Struts 2简单实例

    Struts 2简单实例 参考: [java开发系列]—— struts2简单入门示例 - xingoo - 博客园https://www.cnblogs.com/xing901022/p/39616 ...

  4. 必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现

    必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现 十六.myVector分析         我们知道,vector类将其元素存放在连续的内存中.为了获得可接受的性能,vetor ...

  5. Struts 2简单配置分析

    要配置Struts 2,首先先要有Struts 2的Jar包,可以去Struts的官网下载(http://struts.apache.org/),这里有3个GA版本可以选择下载,我选择的是最新的2.2 ...

  6. Struts2学习---拦截器+struts的工作流程+struts声明式异常处理

    这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...

  7. Python(六)面向对象、异常处理、反射、单例模式

    本章内容: 创建类和对象 面向对象三大特性(封装.继承.多态) 类的成员(字段.方法.属性) 类成员的修饰符(公有.私有) 类的特殊成员 isinstance(obj, cls) & issu ...

  8. 菜鸟学习SSH(一)——Struts实现简单登录(附源码)

    从今天开始,一起跟各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时 ...

  9. 玩转 SSH(一):使用 Struts 搭建简单站点

    我们将使用 Struts 搭建一个简单的应用,当用户发送 HTTP 请求时,Action 类响应并设置返回信息,JSP 页面显示 Action 类中设置的信息. 首先,我们使用 Maven 的 mav ...

随机推荐

  1. 【Canvas】勾画调和级数Harmonic series 曲线 y=1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+....

    相关资料:https://baike.baidu.com/item/%E8%B0%83%E5%92%8C%E7%BA%A7%E6%95%B0/8019971?fr=aladdin 调和级数(英语:Ha ...

  2. P5663 加工零件

    P5663 加工零件 题解 暴力搜索 搜索显然会TLE #include<iostream> #include<cstdio> #include<cstdlib> ...

  3. angular中的动态路由

    1.配置动态路由 const routes: Routes = [ {path: 'home', component: HomeComponent}, {path: 'news', component ...

  4. 编译freeglut

    下载freeglut  http://freeglut.sourceforge.net/ 1>------ 已启动生成: 项目: CallbackMaker, 配置: Debug x64 --- ...

  5. Elasticsearch 7.x文档基本操作(CRUD)

    官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html 1.添加文档 1.1.指定文档ID PUT ...

  6. [Vue warn]: Do not use built-in or reserved HTML elements as component id: content

    错误如下: 报错原因: 不能使用内建标签,组件不能和html标签重复. 解决办法: 把name改成mContent解决.

  7. Node.js使用MySQL连接池示例

    下面是一个封装好的工具类: var fs = require('fs'); var mysql = require('mysql'); var pool = mysql.createPool({ ho ...

  8. Java使用Apache Commons Net的FtpClient进行下载时会宕掉的一种优化方法

    在使用FtpClient进行下载测试的时候,会发现一个问题,就是我如果一直重复下载一批文件,那么经常会宕掉. 也就是说程序一直停在那里一动不动了. 每个人的情况都不一样,我的情况是因为我在本地之前就有 ...

  9. css3实现左右锯齿效果

    要实现的效果:css3实现左右锯齿效果 <!DOCTYPE html> <html> <head> <meta charset=" utf-8&qu ...

  10. css mix-blend-mode 混合模式

    CSS3混合模式种类 在CSS3混合模式中,目前仅有16种:normal,multiply,screen,overlay,darken,lighten,color-dodge,color-burn,h ...