[原创]java WEB学习笔记60:Struts2学习之路--Actioin-声明式异常处理
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.exception-mapping 元素: 配置当前 action 的声明式异常处理
2.exception-mapping 元素中有 2 个属性
exception: 指定需要捕获的的异常类型。异常的全类名
result: 指定一个响应结果, 该结果将在捕获到指定异常时被执行, 既可以来自当前 action 的声明, 也可以来自 global-results 声明.
3.可以通过 global-exception-mappings 元素为应用程序提供一个全局性的异常捕获映射. 但在 global-exception-mappings 元素下声明的任何 exception-mapping 元素只能引用在 global-results 元素下声明的某个 result 元素
声明式异常处理机制由 ExceptionMappingInterceptor 拦截器负责处理, 当某个 exception-mapping 元素声明的异常被捕获到时, ExceptionMappingInterceptor 拦截器就会向 ValueStack 中添加两个对象:
exception: 表示被捕获异常的 Exception 对象
exceptionStack: 包含着被捕获异常的栈
可以在视图上通过 <s:property> 标签显示异常消息
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5
6 <struts>
7
8 <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
9 <package name="default" namespace="/" extends="struts-default">
10
11 <!-- 配置全局 -->
12 <global-results>
13 <result name="input">/input.jsp</result>
14 </global-results>
15
16 <global-exception-mappings>
17 <exception-mapping result="input" exception="java.lang.ArithmeticException"></exception-mapping>
18
19 </global-exception-mappings>
20
21 <!-- 在一个action 中配置 -->
22 <action name="product-save" class="com.jason.struts2.Product" method="save">
23 <exception-mapping result="input" exception="java.lang.ArithmeticException"></exception-mapping>
24 <result name="input">/input.jsp</result>
25
26 <result name="success">/details.jsp</result>
27 </action>
28
29 </package>
30
31
32
33
34 </struts>