一、异常的分类

 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这是文件没有找到时的异常类型。
  • 示例:
  1. <package name="default" namespace="/exception" extends="struts-default">
  2. <action name="exception_1" class="action.ErrorAction">
  3. <result name="index_2">/index_2.jsp</result>
  4.  
  5. <exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
  6. <result name="error_1">/error_1.jsp</result>
  7.  
  8. </action>
  9. </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>

  • 示例:
  1. <package name="default" namespace="/exception" extends="struts-default">
  2. <action name="exception_1" class="action.ErrorAction">
  3. <result name="index_2">/index_2.jsp</result>
  4.  
  5. <exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
  6. <exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
  7. <exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
  8. <result name="error_1">/error_1.jsp</result>
  9. <result name="error_2">/error_2.jsp</result>
  10. <result name="error_common">/common.jsp</result>
  11. </action>
  12. </package>

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

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

  1.2  全局异常

  • 定义在package里,使用<global-exception-mappings>,这个package里的所有action都可以使用。其他包要想使用,继承这个包即可。
  1. <package name="default" namespace="/exception" extends="struts-default">
  2. <global-results>
  3. <result name="error_1">/error_1.jsp</result>
  4. <result name="error_2">/error_2.jsp</result>
  5. <result name="error_common">/common.jsp</result>
  6. </global-results>
  7.  
  8. <global-exception-mappings>
  9. <exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
  10. <exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
  11. <exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
  12. </global-exception-mappings>
  13.  
  14. <action name="exception_1" class="action.ErrorAction">
  15. <result name="index_2">/index_2.jsp</result>
  16. </action>
  17. </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. VUE -- iview table 组件 中使用 upload组件 上传组件 on render 事件不会触发问题

    碰到的问题是: upload 组件在 on中写的监听事件不会被触发 在 props 中来监听:==>

  2. javascript 的垃圾回收机制讲一下

    定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束. 像 C 这样的编程语言,具有低级内存管理原语,如 malloc()和 free().开发人员使用这些原语显式地对操作系统的内存进行 ...

  3. Leetcode: Longest Palindromic Substring && Summary: Palindrome

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  4. python 过滤 b'及提取 cmd命令返回值

    #!/usr/bin/env python # -*- coding:utf-8 -*- import subprocess import datetime plist = [] p = subpro ...

  5. vue+php接口

    php: <?php header('Access-Control-Allow-Origin:*'); $date = $_POST['data'];$cars=array("Volv ...

  6. Gitlab分支保护

    问题:使用Git时,会碰到需要对某个分支进行保护,避免其他人随意push. 这里以gitlab为例,具体操作如下: 1.进入项目 2.点击左侧列表中的Settings 3.点击Protected Br ...

  7. QML最大化

    Component.onCompleted: { root.visibility = Window.Maximized} Component.onCompleted: { root.showMaxim ...

  8. Linux MySql状态、启动、停止、重启命令

    1.查看mysql状态 [1]ps -ef|grep mysqld 看看是否有mysqld_safe 和mysqld进程 [root@localhost ~]# ps -ef|grep mysqld ...

  9. toast提示信息获取和Monkey笔记

    获取toast toast提示信息出现场景:用户输入用户名和密码后,提示的'登录成功', 用之前的定位方法获取不了,需要Uiautomator2来获取 安装node.js (使用 npm 或 node ...

  10. docker安装并持久化postgresql数据库

    安装docker步骤略过 1.拉取postgresql镜像 docker pull postgresql 2.创建本地卷,数据卷可以在容器之间共享和重用, 默认会一直存在,即使容器被删除(docker ...