(六)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 ...
随机推荐
- train loss和test loss
train loss 不断下降,test loss不断下降,说明网络仍在学习;(最好的)train loss 不断下降,test loss趋于不变,说明网络过拟合;(max pool或者正则化)tra ...
- DIOCP任务队列和工作线程
DIOCP任务队列和工作线程 涉及4个单元文件:utils_strings.pas,utils_queues.pas,utils_queueTask.pas,utils_grouptask.pas. ...
- WindowsForm客户端自动更新逻辑
启动客户端的时候,单独开一个线程,该线程主要是判断指定服务器上的更新包和本地使用的客户端是否一致,是否需要更新,不需要更新,则退出,需要更新则从服务端的下载更新包,然后提示用户是否更新,点击更新,启动 ...
- Android 摇一摇监听实现
package com.loaderman.androiddemo; import android.content.Context; import android.hardware.Sensor; i ...
- SVG动画示例
package com.loaderman.customviewdemo; import android.graphics.drawable.Animatable; import android.os ...
- python方法未绑定错误
相信 Python 程序员多多少少都和我一样遇到过 Method Unbound Error,直译过来就是 “方法未绑定错误”,虽然搜索之后知道了使用 @classmethod 这样的装饰起后就可以解 ...
- python中关于shutdown 和closesocket的彻底理解!
关于shutdown 和closesocket的彻底理解! shutdown 和closesocket 来,咱们彻底的来讨论一下这个shutdown 和closesocket 从函数调用上来分析(ms ...
- load ifc
void setRootNode( osg::Group* root ) { m_main_view->setSceneData( root ); if( m_hud_camera ) { ro ...
- osg 在fbx模型中添加自定义节点
- 不同操作系统上DNS客户端操作区别汇总
结论:windows有DNS缓存,Linux默认无DNS缓存,只能依赖于安装其他软件. 一.不同操作系统的客户端的DNS缓存差别 1.windows 系统中dns 解析器会使用系统的dns缓存来提高d ...