springmvcグローバル例外ハンドラ

豆を追加

<! - 統一例外処理- > 
    < 上記ID = "exceptionHandlerの" クラス= "com.ak1ak1.common.shiro.ExceptionHandler" />

Javaコード

インポートにjava.io.IOException; 

インポートのjavax.servlet.http.HttpServletRequest;
インポートのjavax.servlet.http.HttpServletResponse; 

輸入org.slf4j.Logger。
輸入org.slf4j.LoggerFactory;
輸入org.springframework.http.HttpStatus。
輸入org.springframework.http.MediaType。
輸入org.springframework.web.servlet.HandlerExceptionResolver;
輸入org.springframework.web.servlet.ModelAndView。

輸入com.ak1ak1.utils.AjaxResult。
輸入com.alibaba.fastjson.JSON。

/ ** 
 * 
 * @authorのhejie 
 * @date 2019年9月18日 
 * @desc统一处理异常
  * / 
パブリック クラス exceptionHandlerの実装HandlerExceptionResolver { 

    保護 ファイナルロガーロガー= LoggerFactory.getLogger(のgetClass()); 

    @Override 
    公共のModelAndView resolveException(HttpServletRequestのリクエスト、レスポンスHttpServletResponseの、ハンドラオブジェクト、例外EX){ 
        logger.error (ex.getMessage()、EXは); 
        // あなたが例外をキャッチしない場合は統一されたシステムは、エラー例外が返され、
        返さ outJson(要求を、レスポンスは、AjaxResult.error( "異常なシステムでは、管理者に連絡してください!" )); 
    } 

    プライベートのModelAndView outJson (HttpServletRequestのリクエスト、HttpServletResponseの応答、AjaxResult AJAX){
        ミュージックビデオのModelAndView = 新しい新しいのModelAndViewは();
         / *   応答を返すために使用される     * /
        response.setStatus(HttpStatus.OK.value()); // 設定されたステータスコード 
        response.setContentType(MediaType.APPLICATION_JSON_VALUE); // ContentTypeを設定し 
        response.setCharacterEncoding( "UTF-8"); // 歪みを回避する 
        response.setHeaderを( "のCache-Control"、 "キャッシュ-NO、MUST-再検証" );
         試み{ 
            response.getWriter()ライト(JSON.toJSONString(アヤックス)); 
        } キャッチ(IOExceptionをE){ 
            logger.error(「クライアント通信例外:「+e.getMessage()、E)。
        } 
        戻りMVと、
    } 
}

 

おすすめ

転載: www.cnblogs.com/hjieone/p/11549627.html