我們還是以登錄的例子來做介紹吧绘沉,先設計好前端頁面如下圖所示:
login.jsp.png
然后自定義兩個異常:
UsernameException.png
PasswordException.png
編寫LoginAction代碼:
LoginAction.png
這里要說明的是测秸,不是所有的驗證都放入validate塊中的滨巴,validate塊中只進行沒有業(yè)務邏輯的驗證悯搔,例如:用戶名長度骑丸、用戶名是否為空妒貌、密碼長度等,而含有業(yè)務邏輯的驗證還是需要放到execute方法中的
接著編寫struts.xml文件:
struts.xml.png
其中涉及到的4個jsp文件如下:
g_username_err.jsp.png
g_pwd_err.jsp.png
username_err.jsp.png
pwd_err.jsp.png
測試例子1:
依次輸入zhangsan苏揣、1234黄鳍,如下圖所示:
test_1.png
點擊登錄后返回結果如下:
test_1_ret.png
測試例子2:
依次輸入123456平匈、12藏古,如下圖所示:
test_2.png
點擊登錄后,返回結果如下圖所示:
test_2_ret.png
根據上述兩個測試結果可以判斷出:
全局result沒有其作用拧晕,換言之局部result其作用了,那么對于全局異常與局部異常到底誰會其作用呢输玷?這里就不在展示了,直接說出答案欲鹏,局部異常會起作用
總結:
對于這個結果而言,我們只需要記住一點原則就可以了即:局部始終優(yōu)于全局
struts2提供了一個比較好的異常機制赔嚎,當發(fā)生某個異常的時候胧弛,讓開發(fā)者決定往哪里跳轉,而不是顯示Tomcat堆棧信息
全局異常其實和全局變量類似结缚,把大多數Action會出現的異常情況提取出來,這樣就不用在每個Action中重復配置該異常以及result了