欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC全局異常處理的三種方式

 更新時(shí)間:2021年01月13日 11:44:40   作者:用戶1739750354287  
這篇文章主要介紹了SpringMVC全局異常處理的三種方式,幫助大家更好的理解和使用springmvc,感興趣的朋友可以了解下

在 JavaEE 項(xiàng)目的開發(fā)中,不管是對(duì)底層的數(shù)據(jù)庫(kù)操作過(guò)程,還是業(yè)務(wù)層的處理過(guò)程,還是控制層的處理過(guò)程,都不可避免會(huì)遇到各種可預(yù)知的、不可預(yù)知的異常需要處理。每個(gè)過(guò)程都單獨(dú)處理異常,系統(tǒng)的代碼耦合度高,工作量大且不好統(tǒng)一,維護(hù)的工作量也很大。

SpringMvc 對(duì)于異常處理這塊提供了支持,通過(guò) SpringMvc 提供的全局異常處理機(jī)制,能夠?qū)⑺蓄愋偷漠惓L幚韽母鱾€(gè)處理過(guò)程解耦出來(lái),這樣既保證了相關(guān)處理過(guò)程的功能較單一,也實(shí)現(xiàn)了異常信息的統(tǒng)一處理和維護(hù)。

SpringMVC全局異常處理的三種方式

  • 使用 Spring MVC 提供的簡(jiǎn)單異常處理器 SimpleMappingExceptionResolver;
  • 實(shí)現(xiàn) Spring 的異常處理接口 HandlerExceptionResolver 自定義自己的異常處理器;
  • 使用 @ExceptionHandler 注解實(shí)現(xiàn)異常處理;

案例實(shí)操

全局異常處理方式一

配置 SimpleMappingExceptionResolver 對(duì)象

<bean class="org.springframework.web.servlet.handler.SimpleMappingException Resolver">
  <property name="defaultErrorView" value="error"></property>
  <property name="exceptionAttribute" value="ex"></property>
  <property name="exceptionMappings">
    <props>
      <prop key="com.xxx.exception.BusinessException">error1</prop>
      <prop key="com.xxx.exception.ParamsException">error2</prop>
    </props>
  </property>
</bean>

全局異常處理方式二

實(shí)現(xiàn) HandlerExceptionResolver 接口

@Component
public class GlobalException implements HandlerExceptionResolver {
  @Override
  public ModelAndView resolveException(HttpServletRequest request,
    HttpServletResponse response, Object handler, Exception ex) {
      Map<String,Object> map=new HashMap<String, Object>();
      map.put("ex", ex);
      ModelAndView mv=null;
      if(ex instanceof ParamsException){
      	return new ModelAndView("error_param", map);
      }
      if(ex instanceof BusinessException){
      	return new ModelAndView("error_business", map);
      }
    return new ModelAndView("error", map);
  } 
}

使用實(shí)現(xiàn) HandlerExceptionResolver 接口的異常處理器進(jìn)行異常處理,具有集成簡(jiǎn)單、有良好的擴(kuò)展性、對(duì)已有代碼沒(méi)有入侵性等優(yōu)點(diǎn),同時(shí),在異常處理時(shí)能獲取導(dǎo)致出現(xiàn)異常的對(duì)象,有利于提供更詳細(xì)的異常處理信息。

全局異常處理方式三

頁(yè)面處理器繼承 BaseController

public class BaseController {
  @ExceptionHandler
  public String exc(HttpServletRequest request,HttpServletResponse
  response,Exception ex){
    request.setAttribute("ex", ex);
    if(ex instanceof ParamsException){
      return "error_param"; 
    }
    if(ex instanceof BusinessException){
      return "error_business"; 
    }
    return "error";
  } 
}

使用 @ExceptionHandler 注解實(shí)現(xiàn)異常處理,具有集成簡(jiǎn)單、有擴(kuò)展性好(只需要將要異常處理的 Controller 類繼承于 BaseController 即可)、不需要附加 Spring 配置等優(yōu)點(diǎn),但該方法對(duì)已有代碼存在入侵性(需要修改已有代碼,使相關(guān)類繼承于 BaseController),在異常處理時(shí)不能獲取除異常以外的數(shù)據(jù)。

擴(kuò)展~未捕獲異常的處理

對(duì)于 Unchecked Exception 而言,由于代碼不強(qiáng)制捕獲,往往被忽略,如果運(yùn)行期產(chǎn)生了 Unchecked Exception,而代碼中又沒(méi)有進(jìn)行相應(yīng)的捕獲和處理,則我們可能不得不面對(duì)尷尬的 404、500……等服務(wù)器內(nèi)部錯(cuò)誤提示頁(yè)面。我們需要一個(gè)全面而有效的異常處理機(jī)制。目前大多數(shù)服務(wù)器也都支持在 Web.xml 中通過(guò) (Websphere/Weblogic) 或者 (Tomcat) 節(jié)點(diǎn)配置特定異常情況的顯示頁(yè)面。修改 web.xml 文件,增加以下內(nèi)容: java.lang.Throwable /500.jsp 500 /500.jsp 404 /404.jsp

以上就是SpringMVC全局異常處理的三種方式的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC全局異常處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java編程BigDecimal用法實(shí)例分享

    Java編程BigDecimal用法實(shí)例分享

    這篇文章主要介紹了Java編程BigDecimal用法實(shí)例分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 關(guān)于dubbo的RPC和RESTful性能及對(duì)比

    關(guān)于dubbo的RPC和RESTful性能及對(duì)比

    這篇文章主要介紹了關(guān)于dubbo的RPC和RESTful性能及對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java Session驗(yàn)證碼案例代碼實(shí)例解析

    Java Session驗(yàn)證碼案例代碼實(shí)例解析

    這篇文章主要介紹了Java Session驗(yàn)證碼案例代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringCloud Gateway的路由,過(guò)濾器和限流解讀

    SpringCloud Gateway的路由,過(guò)濾器和限流解讀

    這篇文章主要介紹了SpringCloud Gateway的路由,過(guò)濾器和限流解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 2024版本IDEA創(chuàng)建Servlet模板的圖文教程

    2024版本IDEA創(chuàng)建Servlet模板的圖文教程

    新版IDEA?2024.1.4中,用戶需要自行創(chuàng)建Servlet模板以解決Web項(xiàng)目無(wú)法通過(guò)右鍵創(chuàng)建Servlet的問(wèn)題,本文詳細(xì)介紹了添加ServletAnnotatedClass.java模板的步驟,幫助用戶快速配置并使用新的Servlet模板,需要的朋友可以參考下
    2024-10-10
  • 詳解SpringBoot構(gòu)建的Web項(xiàng)目如何在服務(wù)端校驗(yàn)表單輸入

    詳解SpringBoot構(gòu)建的Web項(xiàng)目如何在服務(wù)端校驗(yàn)表單輸入

    這篇文章主要介紹了詳解SpringBoot構(gòu)建的Web項(xiàng)目如何在服務(wù)端校驗(yàn)表單輸入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • JVM中的程序計(jì)數(shù)寄存器PC是什么詳解

    JVM中的程序計(jì)數(shù)寄存器PC是什么詳解

    這篇文章主要介紹了JVM中的程序計(jì)數(shù)寄存器PC原理分析,JVM中的程序計(jì)數(shù)寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存儲(chǔ)指令相關(guān)的現(xiàn)場(chǎng)信息
    2021-09-09
  • Java 設(shè)計(jì)模式之適配器模式詳解

    Java 設(shè)計(jì)模式之適配器模式詳解

    設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性
    2021-11-11
  • Java字節(jié)流與基本數(shù)據(jù)類型的轉(zhuǎn)換實(shí)例

    Java字節(jié)流與基本數(shù)據(jù)類型的轉(zhuǎn)換實(shí)例

    本篇文章主要介紹了Java字節(jié)流與基本數(shù)據(jù)類型的轉(zhuǎn)換實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作

    Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作

    這篇文章主要介紹了Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論