




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第SpringMVC學(xué)習(xí)之JSON和全局異常處理詳解目錄1.為什么要全局異常處理2.異常處理思路3.SpringMVC異常分類4.綜合案例4.1SpringMVC自帶的簡單異常處理器4.2通過HandlerExceptionResovler接口實現(xiàn)全局異常4.3使用@ControllerAdvice+@ExceptionHandler實現(xiàn)全局異常4.4響應(yīng)封裝類4.4.1創(chuàng)建自定義異常類BusinessException4.4.2創(chuàng)建響應(yīng)枚舉類JsonResponseStatus4.4.3創(chuàng)建響應(yīng)封裝類JsonResponseBody總結(jié)
1.為什么要全局異常處理
我們知道,系統(tǒng)中異常包括:編譯時異常和運行時異常RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規(guī)范代碼開發(fā)、測試通過手段減少運行時異常的發(fā)生。在開發(fā)中,不管是dao層、service層還是controller層,都有可能拋出異常,在springmvc中,能將所有類型的異常處理從各處理過程解耦出來,既保證了相關(guān)處理過程的功能較單一,也實現(xiàn)了異常信息的統(tǒng)一處理和維護(hù)。
2.異常處理思路
系統(tǒng)的dao、service、controller出現(xiàn)異常都通過throwsException向上拋出,最后由springmvc前端控制器交由異常處理器進(jìn)行異常處理。springmvc提供全局異常處理器(一個系統(tǒng)只有一個異常處理器)進(jìn)行統(tǒng)一異常處理。
3.SpringMVC異常分類
1)使用SpringMVC提供的簡單異常處理器SimpleMappingExceptionResolver;
2)實現(xiàn)Spring的異常處理接口HandlerExceptionResolver自定義自己的異常處理器;
3)使用@ControllerAdvice+@ExceptionHandler
4.綜合案例
4.1SpringMVC自帶的簡單異常處理器
SpringMVC中自帶了一個異常處理器叫SimpleMappingExceptionResolver,該處理器實現(xiàn)了HandlerExceptionResolver接口,全局異常處理器都需要實現(xiàn)該接口
!--springmvc提供的簡單異常處理器--
bean
!--定義默認(rèn)的異常處理頁面--
propertyname="defaultErrorView"value="error"/
!--定義異常處理頁面用來獲取異常信息的變量名,也可不定義,默認(rèn)名為exception--
propertyname="exceptionAttribute"value="ex"/
!--定義需要特殊處理的異常,這是重要點--
propertyname="exceptionMappings"
props
propkey="java.lang.RuntimeException"error/prop
/props
!--還可以定義其他的自定義異常--
/property
/bean
注:頁面跳轉(zhuǎn)由SpringMVC來接管了,所以此處的定義默認(rèn)的異常處理頁面都應(yīng)該配置成邏輯視圖名。
4.2通過HandlerExceptionResovler接口實現(xiàn)全局異常
@Component
publicclassGlobalExceptionHandlerimplementsHandlerExceptionResolver{
@Override
publicModelAndViewresolveException(HttpServletRequesthttpServletRequest,
HttpServletResponsehttpServletResponse,
Objecto,Exceptione){
}
注:
1)通過instanceof判斷異常類型
2)通過設(shè)置mv.setView(newMappingJackson2JsonView())方式返回JSON數(shù)據(jù);
4.3使用@ControllerAdvice+@ExceptionHandler實現(xiàn)全局異常
@ControllerAdvice
publicclassGlobalExceptionResolver{
@ExceptionHandler(value=RuntimeException.class)
publicModelAndViewhandler(Exceptione){
}
4.4響應(yīng)封裝類
4.4.1創(chuàng)建自定義異常類BusinessException
BusinessException自定義異常類將繼承RuntimeException異常,該異常類用于處理在程序代碼運行過程所產(chǎn)生的運行時業(yè)務(wù)異常信息。
4.4.2創(chuàng)建響應(yīng)枚舉類JsonResponseStatus
JsonResponseStatus響應(yīng)枚舉類用于自定義錯誤碼
4.4.3創(chuàng)建響應(yīng)封裝類JsonResponseBody
JsonResponseBody響應(yīng)封裝類用于以JSON的形式統(tǒng)一輸出錯誤信息。
1.添加jackson相關(guān)依賴
dependency
groupIdcom.fasterxml.jackson.core/groupId
artifactIdjackson-databind/artifactId
version2.9.3/version
/dependency
dependency
groupIdcom.fasterxml.jackson.core/groupId
artifactIdjackson-core/artifactId
version2.9.3/version
/dependency
dependency
groupIdcom.fasterxml.jackson.core/groupId
artifactIdjackson-annotations/artifactId
version2.9.3/version
/dependency
2.在springmvc-servlet.xml的mvc:annotation-driven標(biāo)簽下添加如下內(nèi)容
!--但是,從spring3.1開始DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter的使用已經(jīng)過時--
!--spring3.1開始我們應(yīng)該用RequestMappingHandlerMapping來替換DefaultAnnotationHandlerMapping,--
!--spring3.1開始我們應(yīng)該用用RequestMappingHandlerAdapter來替換AnnotationMethodHandlerAdapter--
bean
propertyname="messageConverters"
list
refbean="mappingJackson2HttpMessageConverter"/
/list
/property
/bean
beanid="mappingJackson2HttpMessageConverter"
!--處理中文亂碼以及避免IE執(zhí)行AJAX時,返回JSON出現(xiàn)下載文件--
propertyname="supportedMediaTypes"
list
valuetext/html;charset=UTF-8/value
valuetext/json;charset=UTF-8/value
valueapplication/json;charset=UTF-8/value
/list
/property
/bean
3.在請求處理方法中添加@ResponseBody注解,將返回結(jié)果直接轉(zhuǎn)換成JSON
@RequestMapping("/loadFwxxToJson")
@ResponseBody
publicFwxxloadFwxxToJson(@Mod
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生防疫王帥00課件
- T/BIKE 4-2019共享自行車鎖具
- 功能性飲料在2025年運動健身市場的品牌建設(shè)策略研究報告
- 長期護(hù)理員崗位須知
- 2025年語言培訓(xùn)行業(yè)國際化課程體系構(gòu)建與實施報告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺異構(gòu)數(shù)據(jù)庫融合在智能電網(wǎng)調(diào)度中的應(yīng)用報告
- 2025年老年教育課程設(shè)置與智能教學(xué)助手應(yīng)用報告
- 新生兒護(hù)理管理制度
- 胰腺炎健康教育科普
- 藥事管理與法規(guī):采購與驗收藥品
- ktv包房公主協(xié)議書
- 2025年全球經(jīng)濟風(fēng)險試題及答案
- 2025年陜西咸陽亨通電力(集團)有限公司招聘筆試參考題庫附帶答案詳解
- 小學(xué)二年級有余數(shù)的除法口算題(共300題)
- 【MOOC】家具史-南京林業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 腦洞大開背后的創(chuàng)新思維學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- DLT 572-2021 電力變壓器運行規(guī)程
- 工序單位能耗地計算方法、及企業(yè)噸鋼可比能耗計算方法
- 超市標(biāo)準(zhǔn)商品分類表格模板
評論
0/150
提交評論