(六)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 不知道一个工具怎么用
完整的工具帮助信息 import arcpy print(arcpy.Usage("Buffer_analysis")) print(arcpy.Usage("MakeF ...
- 【DOS】取某目录下某类型文件信息放入文本
C:\Users\horn1\Desktop\新建文件夹>dir *.jar >1.txt 这样,所有扩展名为jar的文件信息就送到新建的文本文件1.txt中了.虽然简单,但也是个常用功能 ...
- How can I get a Netty server to reload a TLS certificate when it is renewed?
java - How can I get a Netty server to reload a TLS certificate when it is renewed? - Stack Overflow ...
- excel怎么把一个sheet的 全部内容打印到一页纸上
参考 https://jingyan.baidu.com/article/5225f26b04005ee6fa090830.html
- wordpress插件开发流程梳理
1.声明一个插件 首先我们必须明白,wordpress的插件可以是单文件,也可以是多文件,css/html都不是必须的,以下举例暂且在单文件模式下 比如我们要创建一个名为 hellophp的插件,那我 ...
- Vue 相关开源项目库汇总
element ★9395 - 饿了么出品的Vue2的web UI工具套件 Vux ★6835 - 基于Vue和WeUI的组件库 vueAdmin ★569 - 基于vuejs2和element的简单 ...
- Android架构(一)MVP架构在Android中的实践
Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html 核心提示:为什么要重视程序的架构设计 对程序进 ...
- ASP生成JSON数据
原文地址为:ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT " CODEPAGE = " 65001 " % > ...
- Tracker 服务器地址大全 Tracker List
https://dns.icoa.cn/tracker/ udp://tracker.tiny-vps.com:6969/announce https://1337.abcvg.info/announ ...
- 小程序scroll-view 使用
<scroll-view class="box" scroll-x="true" > <view </view> <view ...