(六)Struts的简单异常处理
一、异常的分类
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的简单异常处理的更多相关文章
- 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
本节又带了一些常用的,却很难理解的问题,本节从文件上传功能的实现引出了线程使用,介绍了线程饥饿的解决方法,异常处理方法,了解RouteTable自定义路径 . 系列文章 七天学会ASP.NET MVC ...
- struts中简单的校验
Struts中简单的校验 “计应134(实验班) 凌豪” Struts2校验简要说明:struts2中通常情况下,类型转换要在数据校验之前进行.类型转换其实也是基本的服务器端校验,合法数据必然可以通过 ...
- Struts 2简单实例
Struts 2简单实例 参考: [java开发系列]—— struts2简单入门示例 - xingoo - 博客园https://www.cnblogs.com/xing901022/p/39616 ...
- 必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现
必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现 十六.myVector分析 我们知道,vector类将其元素存放在连续的内存中.为了获得可接受的性能,vetor ...
- Struts 2简单配置分析
要配置Struts 2,首先先要有Struts 2的Jar包,可以去Struts的官网下载(http://struts.apache.org/),这里有3个GA版本可以选择下载,我选择的是最新的2.2 ...
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Python(六)面向对象、异常处理、反射、单例模式
本章内容: 创建类和对象 面向对象三大特性(封装.继承.多态) 类的成员(字段.方法.属性) 类成员的修饰符(公有.私有) 类的特殊成员 isinstance(obj, cls) & issu ...
- 菜鸟学习SSH(一)——Struts实现简单登录(附源码)
从今天开始,一起跟各位聊聊java的三大框架——SSH.先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时 ...
- 玩转 SSH(一):使用 Struts 搭建简单站点
我们将使用 Struts 搭建一个简单的应用,当用户发送 HTTP 请求时,Action 类响应并设置返回信息,JSP 页面显示 Action 类中设置的信息. 首先,我们使用 Maven 的 mav ...
随机推荐
- arcgis python 刷新
arcpy.RefreshActiveView() 刷新地图和布局窗口 arcpy.RefreshTOC() 刷新内容列表 arcpy.RefreshCatalog(r"F:\tknew10 ...
- 安装navicat后C盘多了好多链接文件夹
安装完最新的navicat后C盘多了好多连接文件夹 多了一堆链接的文件夹,里面就是 这些文件,但是吧强迫症怎么能让C盘那么多没有用的文件夹存在呢 最起码是这样的吧: 怎么办呢?找navicat的设 ...
- 面试准备4——C++相关知识
指针和引用区别: (1)指针: 指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元: 引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已. 如: int a=1;in ...
- 亲历谷歌 Chrome 浏览器弹窗境外广告的解决方法(图) | 技术乐园
亲历谷歌 Chrome 浏览器弹窗境外广告的解决方法(图) | 技术乐园 转 https://www.hack520.com/338.html 谷歌的 Chrome 浏览器是我非常喜欢的一款的浏览器, ...
- alpha测试和beta测试的区别是什么?
1.测试时间不同: Beta测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段. alpha测试简称“α测试”,可以从软件产品编码结束之时开始, ...
- EasyUI实现图片的上传后与其他文本框的提交以及DataGrid中图片的展示
图片即文件,在jsp中文件上传很简单,一个type为file的input,一个form指定enctype为multipart/form-data,通过post提交到后台利用apache的commons ...
- jQuery插件—获取URL参数
做的项目中需要用到通过JS获取GET参数,上网找了一下,找到如下插件: 例如 当前你的URL是: http://www.xxx.com/index.php?test=1&kk=2 //如果想获 ...
- 细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 【Leetcode_easy】1089. Duplicate Zeros
problem 1089. Duplicate Zeros 题意: solution: 其中关于虚拟新数组的下标的计算还是有点迷糊... class Solution { public: void d ...
- leetCode:twoSum 两数之和 【JAVA实现】
LeetCode 两数之和 给定一个整数数组,返回两个数字的索引,使它们相加到特定目标. 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素. 更多文章查看个人博客 个人博客地址:t ...