最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

案例實操

全局異常處理方式一

配置 SimpleMappingExceptionResolver 對象

<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>

全局異常處理方式二

實現(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);
  } 
}

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

全局異常處理方式三

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

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

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

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

相關(guān)文章

  • 詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    這篇文章主要介紹了詳解Spring Cloud 斷路器集群監(jiān)控(Turbine),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • javafx實現(xiàn)圖片3D翻轉(zhuǎn)效果方法實例

    javafx實現(xiàn)圖片3D翻轉(zhuǎn)效果方法實例

    程序?qū)崿F(xiàn)思路: 在javafx中Node對象有一個effect屬性,可以用于實現(xiàn)各種特效。PerspectiveTransform特效可以使Node對象實現(xiàn)透視變換。因此我們可以通過計算透視變換中每個點的位置來實現(xiàn)3D翻轉(zhuǎn)特效。
    2013-04-04
  • SpringBoot與MongoDB版本對照一覽

    SpringBoot與MongoDB版本對照一覽

    這篇文章主要介紹了SpringBoot與MongoDB版本對照一覽,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Spring?Aware接口示例代碼詳解

    Spring?Aware接口示例代碼詳解

    Spring的依賴注入的最大亮點是所有的Bean對Spring容器的存在是沒有意識的,我們可以將Spring容器換成其他的容器,Spring容器中的Bean的耦合度因此也是極低的,本文給大家介紹Spring?Aware接口示例代碼詳解,感興趣的朋友一起看看吧
    2022-02-02
  • IDEA社區(qū)版下載安裝流程詳解(小白篇)

    IDEA社區(qū)版下載安裝流程詳解(小白篇)

    這篇文章主要介紹了IDEA社區(qū)版下載安裝流程詳解(小白篇),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringMVC實現(xiàn)controller中獲取session的實例代碼

    SpringMVC實現(xiàn)controller中獲取session的實例代碼

    本篇文章主要介紹了SpringMVC實現(xiàn)controller中獲取session的實例代碼,具有一定的參考價值,有興趣的可以了解一下。
    2017-02-02
  • JAVA中Object的常用方法

    JAVA中Object的常用方法

    JAVA中Object是所有對象的頂級父類,存在于java.lang包中,這個包不需要我們手動導(dǎo)包,本文通過實例代碼介紹JAVA中Object的常用方法,感興趣的朋友一起看看吧
    2023-11-11
  • 詳解Java的堆內(nèi)存與棧內(nèi)存的存儲機(jī)制

    詳解Java的堆內(nèi)存與棧內(nèi)存的存儲機(jī)制

    這篇文章主要介紹了Java的堆內(nèi)存與棧內(nèi)存的存儲機(jī)制,包括JVM的內(nèi)存優(yōu)化和GC等相關(guān)方面內(nèi)容,需要的朋友可以參考下
    2016-01-01
  • map實現(xiàn)按value升序排序

    map實現(xiàn)按value升序排序

    map內(nèi)部是按照hash算法存儲的,但如果能對map排序在某些時候還是有用的,下面實現(xiàn)對map按照value升序排序,實現(xiàn)對map按照key排序,大家參考使用吧
    2014-01-01
  • 使用mybatis報Invalid bound statement解決分析

    使用mybatis報Invalid bound statement解決分析

    這篇文章主要為大家介紹了使用mybatis報Invalid bound statement原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評論

西城区| 健康| 拉孜县| 房山区| 西乡县| 花莲市| 读书| 大埔区| 陵水| 咸宁市| 洞头县| 拉萨市| 义马市| 和静县| 永泰县| 旬邑县| 金寨县| 南岸区| 阿拉善盟| 太白县| 民县| 随州市| 江北区| 三亚市| 习水县| 比如县| 久治县| 洛扎县| 西华县| 拜泉县| 南投县| 南宫市| 张家港市| 全南县| 寻乌县| 海南省| 凌源市| 东丽区| 冕宁县| 安徽省| 和政县|