版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章統(tǒng)一異常處理學(xué)習(xí)目的與要求本章重點(diǎn)講解如何使用SpringMVC框架進(jìn)行異常的統(tǒng)一處理。通過(guò)本章的學(xué)習(xí),讀者需要掌握SpringMVC框架統(tǒng)一異常處理的使用方法。《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄12.1示例介紹12.2SimpleMappingExceptionResolver類12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.1示例介紹為了驗(yàn)證SpringMVC框架的三種異常處理方式的實(shí)際效果,需要開(kāi)發(fā)一個(gè)測(cè)試應(yīng)用ch12,從Dao層、Service層、Controller層分別拋出不同的異常(SQLException、自定義異常和未知異常),然后分別集成三種方式進(jìn)行異常處理,進(jìn)而比較三種方式的優(yōu)缺點(diǎn)?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社1.創(chuàng)建應(yīng)用ch12創(chuàng)建應(yīng)用ch12,并導(dǎo)入SpringMVC相關(guān)的JAR包,包括Spring的4個(gè)基礎(chǔ)JAR包、SpringCommonsLoggingBridge對(duì)應(yīng)的JAR包spring-jcl-6.0.0.jar、AOP實(shí)現(xiàn)JAR包spring-aop-6.0.0.jar、DispatcherServlet接口所依賴的性能監(jiān)控包(micrometer-observation.jar和micrometer-commons.jar)以及兩個(gè)Web相關(guān)的JAR包?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社2.創(chuàng)建自定義異常類在應(yīng)用ch12的src/main/java目錄下,創(chuàng)建包exception,并在該包中創(chuàng)建自定義異常類MyException。publicclassMyExceptionextendsException{ privatestaticfinallongserialVersionUID=1L; publicMyException(){ super(); } publicMyException(Stringmessage){ super(message); }}《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社3.創(chuàng)建Dao層在應(yīng)用ch12的src/main/java目錄下,創(chuàng)建dao包,并在該包中創(chuàng)建TestExceptionDao類,該類中定義三個(gè)方法,分別拋出“數(shù)據(jù)庫(kù)異?!?、“自定義異?!币约啊拔粗惓!?。@RepositorypublicclassTestExceptionDao{ publicvoiddaodb()throwsException{ thrownewSQLException("Dao中數(shù)據(jù)庫(kù)異常"); } publicvoiddaomy()throwsException{ thrownewMyException("Dao中自定義異常"); } publicvoiddaono()throwsException{ thrownewException("Dao中未知異常"); }}《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社4.Service層在應(yīng)用ch12的src/main/java目錄下,創(chuàng)建service包,并在該包中創(chuàng)建TestExceptionService接口和TestExceptionServiceImpl實(shí)現(xiàn)類,該接口中定義六個(gè)方法,其中有三個(gè)方法調(diào)用dao層中的方法,有三個(gè)是service層的方法。Service層的方法是為演示service層的“數(shù)據(jù)庫(kù)異常”、“自定義異?!币约啊拔粗惓!倍x的。《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社5.創(chuàng)建控制器類在應(yīng)用ch12的src/main/java目錄下,創(chuàng)建controller包,并在該包中創(chuàng)建TestExceptionController控制器類?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社6.創(chuàng)建View層在應(yīng)用ch12的src/main/webapp/目錄下,創(chuàng)建應(yīng)用的首頁(yè)面index.jsp。<body><h1>所有的異常處理演示示例</h1><h3><ahref="daodb">處理dao中數(shù)據(jù)庫(kù)異常</a></h3><h3><ahref="daomy">處理dao中自定義異常</a></h3><h3><ahref="daono">處理dao未知錯(cuò)誤</a></h3><hr><h3><ahref="servicedb">處理service中數(shù)據(jù)庫(kù)異常</a></h3><h3><ahref="servicemy">處理service中自定義異常</a></h3><h3><ahref="serviceno">處理service未知錯(cuò)誤</a></h3><hr><h3><ahref="db">處理controller中數(shù)據(jù)庫(kù)異常</a></h3><h3><ahref="my">處理controller中自定義異常</a></h3><h3><ahref="no">處理controller未知錯(cuò)誤</a></h3><hr><!--web.xml中配置404--><h3><ahref="404">404錯(cuò)誤</a></h3></body>在應(yīng)用ch12的src/main/webapp/WEB-INF/目錄下,創(chuàng)建jsp文件夾,并在該文件夾中創(chuàng)建View層的4個(gè)JSP頁(yè)面?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社7.web.xml對(duì)于UncheckedException而言,由于代碼不強(qiáng)制捕獲,往往被忽略,如果運(yùn)行期產(chǎn)生了UncheckedException,而代碼中又沒(méi)有進(jìn)行相應(yīng)的捕獲和處理,則可能不得不面對(duì)404、500……等服務(wù)器內(nèi)部錯(cuò)誤提示頁(yè)面。所以在web.xml文件中添加了全局異常404處理,具體代碼如下:<error><error-code>404</error-code><location>/WEB-INF/jsp/404.jsp</location></error>《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄12.1示例介紹12.2SimpleMappingExceptionResolver類12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.2SimpleMappingExceptionResolver類SimpleMappingExceptionResolver類是接口HandlerExceptionResolver的一個(gè)實(shí)現(xiàn)。使用SimpleMappingExceptionResolver類統(tǒng)一異常處理時(shí),需要在配置文件中,提前配置異常類和View的對(duì)應(yīng)關(guān)系?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.2SimpleMappingExceptionResolver類
<!--配置SimpleMappingExceptionResolver(異常類與View的對(duì)應(yīng)關(guān)系)--> <beanclass="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!--定義默認(rèn)的異常處理頁(yè)面,本實(shí)例是Exception異常發(fā)生時(shí)找到error.jsp-->
<propertyname="defaultErrorView"value="error"></property> <!--定義需要特殊處理的異常,用類名或完全路徑名作為key,異常頁(yè)名作為值--> <propertyname="exceptionMappings"> <props>
<propkey="exception.MyException">my-error</prop> <propkey="java.sql.SQLException">sql-error</prop> <!--這里還可以繼續(xù)擴(kuò)展對(duì)不同異常類型的處理--> </props> </property> </bean>配置完成后,就可以通過(guò)SimpleMappingExceptionResolver異常處理器統(tǒng)一處理12.1節(jié)中的異常。發(fā)布應(yīng)用ch12到Tomcat服務(wù)器,并啟動(dòng)服務(wù)器后,可通過(guò)地址http://localhost:8080/ch12/測(cè)試應(yīng)用?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄12.1示例介紹12.2SimpleMappingExceptionResolver類12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.3HandlerExceptionResolver接口HandlerExceptionResolver接口用于解析請(qǐng)求處理過(guò)程中所產(chǎn)生的異常。開(kāi)發(fā)者可以開(kāi)發(fā)該接口的實(shí)現(xiàn)類,重寫publicModelAndViewresolveException(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3)方法,進(jìn)行SpringMVC應(yīng)用的異常統(tǒng)一處理(不同異常轉(zhuǎn)向不同頁(yè)面)。在ch12應(yīng)用的exception包中,創(chuàng)建一個(gè)HandlerExceptionResolver接口的實(shí)現(xiàn)類MyExceptionHandler?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.3HandlerExceptionResolver接口publicclassMyExceptionHandlerimplementsHandlerExceptionResolver{ @Override publicModelAndViewresolveException(HttpServletRequestarg0,HttpServletResponsearg1,Objectarg2,Exceptionarg3){ //根據(jù)不同異常轉(zhuǎn)向不同頁(yè)面(統(tǒng)一處理),即異常與view的對(duì)應(yīng)關(guān)系 if(arg3instanceofMyException){ returnnewModelAndView("my-error"); }elseif(arg3instanceofSQLException){ returnnewModelAndView("sql-error"); }else{ returnnewModelAndView("error"); } }}需要將異常統(tǒng)一處理的實(shí)現(xiàn)類MyExceptionHandler在配置文件中托管給SpringMVC框架才能進(jìn)行異常的統(tǒng)一處理。配置代碼為<beanclass="exception.MyExceptionHandler"/>。發(fā)布應(yīng)用ch12到Tomcat服務(wù)器,并啟動(dòng)服務(wù)器后,可通過(guò)地址http://localhost:8080/ch12/測(cè)試應(yīng)用?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄12.1示例介紹12.2SimpleMappingExceptionResolver類12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.4@ExceptionHandler注解如果在控制器Controller中有一個(gè)使用@ExceptionHandler注解修飾的方法,那么當(dāng)Controller的任何方法拋出異常時(shí),都由該方法統(tǒng)一處理異常。因此,本示例可以創(chuàng)建一個(gè)抽象類BaseController(父類),并在類中使用@ExceptionHandler注解聲明異常統(tǒng)一處理的方法?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.4@ExceptionHandler注解publicabstractclassBaseController{ /**基于@ExceptionHandler異常處理*/ @ExceptionHandlerpublicStringexception(Exceptionex){//根據(jù)不同異常轉(zhuǎn)向不同頁(yè)面,即異常與View的對(duì)應(yīng)關(guān)系
if(exinstanceofSQLException){ return"sql-error";}elseif(exinstanceofMyException){ return"my-error";}else{ return"error";}}}@ControllerpublicclassTestExceptionControllerextendsBaseController{……}使用@ExceptionHandler注解聲明統(tǒng)一處理異常時(shí),不需要配置任何與異常處理相關(guān)的信息?!禞avaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社目錄12.1示例介紹12.2SimpleMappingExceptionResolver類12.3HandlerExceptionResolver接口12.4@ExceptionHandler注解12.5@ControllerAdvice注解《JavaEE框架整合開(kāi)發(fā)入門到實(shí)戰(zhàn)》陳恒
主編,清華大學(xué)出版社12.5@ControllerAdvi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026春招:醫(yī)療器械筆試題及答案
- 2026年消防設(shè)施的遠(yuǎn)程監(jiān)控與控制設(shè)計(jì)
- 賀新郎辛棄疾課件
- 2026春招:無(wú)人機(jī)組裝測(cè)試真題及答案
- 貫標(biāo)培訓(xùn)課件
- 貨運(yùn)公司安全培訓(xùn)簡(jiǎn)報(bào)課件
- 消化系統(tǒng)疾病診斷與治療新方法
- 醫(yī)療大數(shù)據(jù)在公共衛(wèi)生事件預(yù)警與應(yīng)對(duì)中的應(yīng)用
- 醫(yī)院醫(yī)療設(shè)備購(gòu)置規(guī)劃總結(jié)
- 2026年渤海船舶職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考試題有答案解析
- 小學(xué)二年級(jí)上冊(cè)期中考試數(shù)學(xué)試卷含答案(共3套-人教版)
- JTG D30-2015 公路路基設(shè)計(jì)規(guī)范
- 單位委托物業(yè)管理合同范本
- 訪問(wèn)控制與審計(jì)監(jiān)控課件
- 寶石燒制瓷器工藝
- 閑置資產(chǎn)盤活利用方案
- 12345工作總結(jié)個(gè)人
- 高中地理第一學(xué)期期中試卷湘教版必修1
- 測(cè)定直流電源的參數(shù)并研究其輸出特性
- 2021年云南公務(wù)員考試行測(cè)試題及答案
- 如何撰寫優(yōu)秀的歷史教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論