struts声明式异常
一,局部exception
把action中產生的異常配置到struts-config.xml中,哪個action出現異常就在哪個action的配置中進行配置。
<action path="/login"
????type="com.bjsxt.struts.LoginAction"
????name="loginForm"
????scope="request"
????validate="false"
????input="/login.jsp"
??>?
??<!--
???<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
???<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
?? -->?
???<forward name="success" path="/login_success.jsp"/>
???<forward name="error" path="/login.jsp"/>
??</action>
exception中key表示的是國際化中對應的信息
type表示的是異常類
handler表示自定義的異常處理方式
如果要讓出現異常后自動跳轉到某頁面,則在Action中配置屬性input,或者在exception中添加path屬性,其優先級高于Action中的input。
二,全局exception
<global-exceptions>
?<!--
???<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" path="/login_error.jsp"/>
???<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" path="/login_error.jsp"/>
? -->
?
? <!--
??<exception key="user.not.found" type="com.bjsxt.struts.UserNotFoundException" handler="org.apache.struts.action.ExceptionHandler"/>
??<exception key="user.password.error" type="com.bjsxt.struts.PasswordErrorException" handler="org.apache.struts.action.ExceptionHandler"/>
? -->
?
? <!--
? <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException" handler="com.bjsxt.struts.ErrorCodeExceptionHandler"/>
?? -->
?? <!--
?? <exception key="error.exception" type="com.bjsxt.struts.AppException" handler="com.bjsxt.struts.AppExceptionHandler"/>
??? -->?
??
?? <exception key="error.exception" type="com.bjsxt.struts.AppException"/>
?</global-exceptions>
三,struts實現聲明式異常的方式
如果Action中出現異常,會被Action中的異常捕獲并向上拋出異常,而該異常會被struts中,調用processException()方法處理異常,使用反射查找配置的異常,如果沒有配置那么就判斷是否是IOException異常或者是ServletException異常,如果不是拋到web容器中,如果在web.xml中配置了該異常的處理方式,那么就處理如果沒有配置那么就直接顯示到頁面;如果在struts中配置了,那么就按照配置的處理,struts創建handler類來處理配置的異常。
轉載于:https://www.cnblogs.com/jinzhengquan/archive/2011/02/15/1955124.html
總結
以上是生活随笔為你收集整理的struts声明式异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信开发实现一键拨号出现屏蔽问题的解决方
- 下一篇: Jeecg - MiniDao专题讲解公