struts配置全局异常result与全局异常映射mapping以及自定义返回类型
来源:互联网 发布:常见电信网络诈骗试题 编辑:程序博客网 时间:2024/04/30 12:31
今天项目要配置异常页面。
贴配置
<!-- 配置全局结果及异常映射 --><package name="base-default" extends="struts-default"><!-- 全局返回结果 --><global-results><result name="error" type="error">/WEB-INF/jsp/error.jsp</result><result name="sysError">/WEB-INF/jsp/error.jsp</result><result name="input">/WEB-INF/jsp/error.jsp</result></global-results>
<!-- 全局异常映射 --><global-exception-mappings><exception-mapping result="sysError" exception="cn.itcast.core.exception.SysException"></exception-mapping><exception-mapping result="input" exception="java.lang.Exception"></exception-mapping></global-exception-mappings></package>
在struts配置后,会有struts的拦截器拦截。所以在配置好异常页面后,可以在action中写方法时抛出异常,交给struts拦截并处理
可以这么理解这个流程:
>我们在action中的方法遇到异常后,抛出相应的异常xxxException
>struts拦截获取到这个异常,根据获取的异常的类型,在<global-exception-mapping>中,看有没有这个类型的异常
>有这个类型的异常,再去获取<global-exception-mapping>配置的result叫什么
>没有这个类型的异常,看有没有父类异常(一般都会配置个Exception,保证其他类异常能够处理到),同样获取配置的result叫什么
>根据获得的result值去<global-results>中找叫这个名字的result,获得标签体内的跳转路径
所以,我们可以自己写异常类,比如action层一个异常类、service层一个异常类、dao层一个异常类,每个类对应不同的result,跳转到不同的提示页面,我们就能知道是那个部分出问题了。
再有些特殊情况的补充,有时候没有异常但是有错误信息等,我们需要处理这些错误信息,就要写一个类继承StrutsResultSupport。
<!-- 配置全局结果及异常映射 --><package name="base-default" extends="struts-default"><!-- 返回结果类型 --><result-types><result-type name="error" class="cn.itcast.core.action.SysResultAction"></result-type></result-types><!-- 全局返回结果 --><global-results><result name="error" type="error">/WEB-INF/jsp/error.jsp</result><result name="sysError">/WEB-INF/jsp/error.jsp</result><result name="input">/WEB-INF/jsp/error.jsp</result></global-results><!-- 全局异常映射 --><global-exception-mappings><exception-mapping result="sysError" exception="cn.itcast.core.exception.SysException"></exception-mapping><exception-mapping result="input" exception="java.lang.Exception"></exception-mapping></global-exception-mappings></package>
这个配置相比上面就多了 <!-- 返回结果类型--> 的三行
实际上我们是自定义了result的类型。struts自带的result有10种类型。(json类型不是自带的,需要导包,也是自定义的)
所以为了便于理解,拿常见的result举例:
<result name="error" type="dispatcher">/WEB-INF/jsp/error.jsp</result>
上面这是表示转发类型,将后面的地址转发处理
<result name="error" type="redirect">/WEB-INF/jsp/error.jsp</result>
上面表示是重定向类型,地址重定向访问
同理
<result name="error" type="error">/WEB-INF/jsp/error.jsp</result>
就是按自定义的error类型进行处理,具体处理流程要找error这个type对应的类,这个类是自定义的,里面可以进行自定义的处理。我的理解是发生了未知的错误,可以这么用,(不是异常,异常会被我设置的exception类型捕获),在自定义的类中写一段发送错误报告的代码,然后转发或重定向到页面。
解决这个问题的过程中,为了能理清楚配置的意思,以及配置完成后的执行流程(能更好的理解为什么这么配置)。查阅了如下资料:
参考:
http://www.tuicool.com/articles/eeIr2e
http://lydia-fly.iteye.com/blog/2013736
- struts配置全局异常result与全局异常映射mapping以及自定义返回类型
- Result的返回类型和全局配置
- Struts 2 全局异常
- 自定义全局异常捕获
- 自定义全局异常捕获
- 自定义捕获全局异常
- 自定义捕获全局异常
- struts2配置之全局result及异常处理
- struts2配置之全局result及异常处理
- struts 异常处理 (全局异常处理)
- Struts2全局异常 全局结果的配置
- android自定义捕获全局异常
- Android自定义全局异常捕获
- Spring自定义全局异常处理器
- android 自定义处理全局异常
- SpringMvc全局异常处理器配置
- MVC3全局异常处理与异常日志
- struts配置的result属性。 result的动态配置 . result 全局结果 global-result
- APICLOUND打开新窗口传递参数和获取参数
- 【Python学习笔记】第三方模块
- 安卓获取当前最顶部Task应用名称
- bootstrap学习
- 【Sicily 1937】导游
- struts配置全局异常result与全局异常映射mapping以及自定义返回类型
- Android不同App中Activity的相互启动
- LeetCode 121. Best Time to Buy and Sell Stock
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Java模拟Http post、get请求
- 用java语言实现事件委托模式
- 非常可乐
- MySQL一行多列求和sum()函数
- Filter简介