Struts2
1.捕捉异常
在Struts-default.xml中配置是否开启Struts2的异常映射(配置了一个拦截器)
默认情况下,该拦截器是打开的
如何完成异常处理?
在struts.xml中通过<exception-mapping>标签完成
该标签有两个两个属性:
(1)exception:用于指定可以处理哪一类异常,其值为异常类的全限定名
(2)result:用于指定处理异常后跳转到哪一个逻辑视图
该标签可以放在两个位置,一个是作为<global-exception-mapping>的子标签,一个是作为<action>的子标签
作为<global-exception-mapping>子标签是,可以处理所有action产生的异常,作为<action>子标签时,仅仅可以处理该action中产生的异常。
如何在页面中显示异常信息?
在jsp页面中,可以通过以下两个s标签来显示异常信息:
<s:property value="exception">:输出异常对象本身
<s:property value="exceptionStack">:输出异常堆栈信息
2.标签库
3.值栈(重点)
当一个请求发送到某一个action上时,Struts2框架会自动创建一个该action的实例(action是多例的,与servlet不同,sevlet是单例的),在创建action实例的同时,Struts2框架也会创建与之对应的ActionContext对象和ValueStack对象,用于存储action运行所需数据。这个ValueStack对象同时也会保存对应的Action对象。而且。值栈对象也会被保存在request域中,key为struts.valueStack。
Struts2框架提供一个名为ValueStack的接口,其有一个实现类:OgnlValueStack。
值栈对象内部维护着两个容器,一个名为context,是一个Map对象,另一个名为root,是一个CompoundRoot(继承自ArrayList)类型的对象,我们通常所说值栈都指的是root栈(存值一半都存放在root栈中,但是同时也会存进context栈中)。