1.捕捉異常
在Struts-default.xml中配置是否開啟Struts2的異常映射(配置了一個(gè)攔截器)
默認(rèn)情況下苦锨,該攔截器是打開的
如何完成異常處理事示?
在struts.xml中通過(guò)<exception-mapping>標(biāo)簽完成
該標(biāo)簽有兩個(gè)兩個(gè)屬性:
(1)exception:用于指定可以處理哪一類異常枯途,其值為異常類的全限定名
(2)result:用于指定處理異常后跳轉(zhuǎn)到哪一個(gè)邏輯視圖
該標(biāo)簽可以放在兩個(gè)位置刊棕,一個(gè)是作為<global-exception-mapping>的子標(biāo)簽郑临,一個(gè)是作為<action>的子標(biāo)簽
作為<global-exception-mapping>子標(biāo)簽是据过,可以處理所有action產(chǎn)生的異常,作為<action>子標(biāo)簽時(shí)妒挎,僅僅可以處理該action中產(chǎn)生的異常。
如何在頁(yè)面中顯示異常信息西饵?
在jsp頁(yè)面中酝掩,可以通過(guò)以下兩個(gè)s標(biāo)簽來(lái)顯示異常信息:
<s:property value="exception">:輸出異常對(duì)象本身
<s:property value="exceptionStack">:輸出異常堆棧信息
2.標(biāo)簽庫(kù)
3.值棧(重點(diǎn))
當(dāng)一個(gè)請(qǐng)求發(fā)送到某一個(gè)action上時(shí),Struts2框架會(huì)自動(dòng)創(chuàng)建一個(gè)該action的實(shí)例(action是多例的眷柔,與servlet不同期虾,sevlet是單例的),在創(chuàng)建action實(shí)例的同時(shí)驯嘱,Struts2框架也會(huì)創(chuàng)建與之對(duì)應(yīng)的ActionContext對(duì)象和ValueStack對(duì)象镶苞,用于存儲(chǔ)action運(yùn)行所需數(shù)據(jù)。這個(gè)ValueStack對(duì)象同時(shí)也會(huì)保存對(duì)應(yīng)的Action對(duì)象鞠评。而且茂蚓。值棧對(duì)象也會(huì)被保存在request域中,key為struts.valueStack剃幌。
Struts2框架提供一個(gè)名為ValueStack的接口聋涨,其有一個(gè)實(shí)現(xiàn)類:OgnlValueStack。
值棧對(duì)象內(nèi)部維護(hù)著兩個(gè)容器负乡,一個(gè)名為context牍白,是一個(gè)Map對(duì)象,另一個(gè)名為root抖棘,是一個(gè)CompoundRoot(繼承自ArrayList)類型的對(duì)象茂腥,我們通常所說(shuō)值棧都指的是root棧(存值一半都存放在root棧中,但是同時(shí)也會(huì)存進(jìn)context棧中)切省。