SpringBoot復習:(37)自定義ErrorController

所有接口統一返回的數據格式

package cn.edu.tju.domain;public class MyResponse {private int code;private String message;private String exception;private String stack;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String getException() {return exception;}public void setException(String exception) {this.exception = exception;}public String getStack() {return stack;}public void setStack(String stack) {this.stack = stack;}
}

自定義的ErrorController覆蓋默認的BasicErrorController。當出錯時,也統一返回自定義的數據格式,而不是Spring的ResponseEntity

package cn.edu.tju.controller;import cn.edu.tju.domain.MyResponse;
import org.springframework.boot.autoconfigure.web.ErrorProperties;
import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController;
import org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver;
import org.springframework.boot.web.error.ErrorAttributeOptions;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.List;
import java.util.Map;@Controller
@RequestMapping("/error")
public class MyErrorController extends AbstractErrorController {public MyErrorController(ErrorAttributes errorAttributes, List<ErrorViewResolver> errorViewResolvers) {super(errorAttributes, errorViewResolvers);}@RequestMapping(produces = MediaType.TEXT_HTML_VALUE)public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaa");HttpStatus status = getStatus(request);ErrorAttributeOptions of = ErrorAttributeOptions.of(ErrorAttributeOptions.Include.EXCEPTION,ErrorAttributeOptions.Include.MESSAGE,ErrorAttributeOptions.Include.EXCEPTION//,ErrorAttributeOptions.Include.STACK_TRACE);Map<String, Object> model = Collections.unmodifiableMap(getErrorAttributes(request, of));response.setStatus(status.value());ModelAndView modelAndView = resolveErrorView(request, response, status, model);return (modelAndView != null) ? modelAndView : new ModelAndView("error", model);}@RequestMapping@ResponseBodypublic MyResponse error(HttpServletRequest request) {HttpStatus status = getStatus(request);if (status == HttpStatus.NO_CONTENT) {MyResponse myResponse = new MyResponse();myResponse.setCode(204);return myResponse;}ErrorAttributeOptions of = ErrorAttributeOptions.of(ErrorAttributeOptions.Include.EXCEPTION,ErrorAttributeOptions.Include.MESSAGE,ErrorAttributeOptions.Include.EXCEPTION,ErrorAttributeOptions.Include.STACK_TRACE);Map<String, Object> body = getErrorAttributes(request, of);MyResponse myResponse = new MyResponse();myResponse.setCode(200);myResponse.setMessage(String.valueOf(body.get("message")));myResponse.setException(String.valueOf(body.get("exception")));myResponse.setStack(String.valueOf(body.get("trace")));//path//timestamp//errorreturn myResponse;}
}

SpringBoot默認異常處理自動配置類ErrorMvcAutoConfiguration

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

五個獨特且有趣的ChatGPT指令

今天分享5個很實用的指令&#xff0c;這幾個指令很多時候對我們輸出內容的連貫性、文章風格、創意性等方面有著決定性的作用。 目錄 第一個&#xff1a;Max tokens&#xff08;最大令牌&#xff09; 第二個&#xff1a;Top_p(控制采樣) 第三個&#xff1a;Presence_penalty …

Android Studio System.out.println()中文亂碼

第一步&#xff1a; 打開studio64.exe.vmoptions加入-Dfile.encodingUTF-8 第二步&#xff1a; File-Settings-Editor-File Encodings 把所有的編碼格式改為UTF-8 嘗試跑一下代碼&#xff0c;如果還不行&#xff0c;重啟IDE 再試試。

UI美工設計崗位的工作職責

UI美工設計崗位的工作職責1 職責&#xff1a; 1、負責軟件界面的美術設計、創意工作和制作工作; 2、根據各種相關軟件的用戶群&#xff0c;提出構思新穎、有高度吸引力的創意設計; 3、對頁面進行優化&#xff0c;使用戶操作更趨于人性化; 4、維護現有的應用產品; 5、收集和…

NLP文本匹配任務Text Matching [無監督訓練]:SimCSE、ESimCSE、DiffCSE 項目實踐

NLP文本匹配任務Text Matching [無監督訓練]&#xff1a;SimCSE、ESimCSE、DiffCSE 項目實踐 文本匹配多用于計算兩個文本之間的相似度&#xff0c;該示例會基于 ESimCSE 實現一個無監督的文本匹配模型的訓練流程。文本匹配多用于計算兩段「自然文本」之間的「相似度」。 例如…

一百五十三、Kettle——Linux上安裝的kettle9.3啟動后說缺少libwebkitgtk-1.0(真是坑爹啊,剛龜速下載又忍痛卸載)

一、問題 在kettle9.3可以在本地連接hive312后&#xff0c;在Linux中安裝了kettle9.3&#xff0c;結果啟動時報錯WARNING: no libwebkitgtk-1.0 detected, some features will be unavailable 而且如果直接下載libwebkitgtk的話也沒有用 [roothurys22 data-integration]# yu…

Python學習筆記第五十六(Pandas JSON)

Python學習筆記第五十六天 Pandas JSONread_json()to_string()字典轉為 DataFrame 數據 內嵌的 JSON 數據json_normalize() 后記 Pandas JSON JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript 對象表示法&#xff09;&#xff0c;是存儲和交換文本信息的語…

在線吉他調音

先看效果&#xff08;圖片沒有聲&#xff0c;可以下載源碼看看&#xff0c;比這更好~&#xff09;&#xff1a; 再看代碼&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

【第二階段】kotlin的函數類型作為返回類型

fun main() {//調用,返回的是一個匿名類型&#xff0c;所以info就是一個匿名函數val infoshow("",0)//info接受的返回值為匿名類型&#xff0c;此時info就是一個匿名函數println(info("kotlin",20)) }//返回類型為一個匿名函數的返回類型fun show(name:Str…

01 - 工作區、暫存區、版本庫、遠程倉庫 - 以一次連貫的提交操作為例

查看所有文章鏈接&#xff1a;&#xff08;更新中&#xff09;GIT常用場景- 目錄 文章目錄 1. 工作區、暫存區、版本庫、遠程倉庫1.1 工作區1.2 工作區 > 暫存區&#xff1a;git add1.3 暫存區 > 版本庫&#xff1a;git commit1.4 push到遠程倉庫 1. 工作區、暫存區、版本…

【生成式AI】ProlificDreamer論文閱讀

ProlificDreamer 論文閱讀 Project指路&#xff1a;https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 論文簡介&#xff1a;截止2023/8/10&#xff0c;text-to-3D的baseline SOTA&#xff0c;提出了VSD優化方法 前置芝士:text-to-3D任務簡介 text-to-3D Problem text-to-3D…

解決校園網使用vmware橋接模式,虛擬機與物理機互相ping通,但是虛擬機ping不通百度的問題

遇到的問題 使用校園網時&#xff0c;橋接模式下&#xff0c;物理機可以ping通虛擬機&#xff0c;但是虛擬機ping不通主機 解決方法 在物理機中查看網絡相關信息 ipconfig 修改虛擬機網卡信息 vim /etc/sysconfig/network-scripts/ifcfg-ens33 注意 /ifcfg-ens33需要根據…

C++ QT(一)

目錄 初識QtQt 是什么Qt 能做什么Qt/C與QML 如何選擇Qt 版本Windows 下安裝QtLinux 下安裝Qt安裝Qt配置Qt Creator 輸入中文配置Ubuntu 中文環境配置中文輸入法 Qt Creator 簡單使用Qt Creator 界面組成Qt Creator 設置 第一個Qt 程序新建一個項目項目文件介紹項目文件*.pro樣式…

微信記錄---推薦系統---23/8/14 小總結

推薦系統---23/8/14 小總結 1. ACM推薦系統專題研討會2.圖神經網絡推薦系統3.表1 模型效果對標:MovieLens 1M4.爬蟲技術5.TF-IDF算法6.圖 2 海量學術大數據推薦系統技術架構7.圖 4 CADAL 平臺推薦系統框架設計8.企業推薦系統發展概述MLR(Mixed Logistic Regression)DIEN(Deep…

SpringBoot啟動報錯:java: 無法訪問org.springframework.boot.SpringApplication

報錯原因&#xff1a;jdk 1.8版本與SpringBoot 3.1.2版本不匹配 解決方案&#xff1a;將SpringBoot版本降到2系列版本(例如2.5.4)。如下圖&#xff1a; 修改版本后切記刷新Meavn依賴 然后重新啟動即可成功。如下圖&#xff1a;

3.4 網絡安全管理設備

數據參考&#xff1a;CISP官方 目錄 IDS (入侵檢測系統)網絡安全審計漏洞掃描系統VPN&#xff08;虛擬專網&#xff09;堡壘主機安全管理平臺 一、IDS (入侵檢測系統) 入侵檢測系統&#xff08;IDS&#xff09;是一種網絡安全設備&#xff0c;用于監測和檢測網絡中的入侵行…

樹莓派3B CSI攝像頭配置

1.硬件連接 1、找到 CSI 接口(樹莓派3B的CSI接口在HDMI接口和音頻口中間)&#xff0c;需要拉起 CSI 接口擋板,如下&#xff1a; 2、將攝像頭排線插入CSI接口。記住&#xff0c;有藍色膠帶的一面應該面向音頻口或者網卡方向&#xff0c; 確認方向并插緊排線&#xff0c;將擋板…

【Linux】磁盤或內存 占用比較高要怎么排

當 Linux 磁盤空間滿了時 請注意&#xff0c;在進行任何刪除操作之前&#xff0c;請確保你知道哪些文件可以安全刪除&#xff0c;并備份重要文件&#xff0c;以免意外丟失數據。當 Linux 磁盤空間滿了時&#xff0c;可以按照以下步驟進行排查&#xff1a; 檢查磁盤使用情況&…

華為OD面試(部分)

筆試與性格測驗 一面 問題和算法題都挺簡單的 二面 Java內存泄漏 算法題思路不對&#xff0c;沒寫完只說了下思路&#xff1a;Leetcode516. Longest Palindromic Subsequence hr面&#xff08;資面&#xff09; 最后告訴我hr面掛了。其實這不是最重要的&#xff0c;因為還…

計算機競賽 python 機器視覺 車牌識別 - opencv 深度學習 機器學習

1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 機器視覺 的車牌識別系統 &#x1f947;學長這里給一個題目綜合評分(每項滿分5分) 難度系數&#xff1a;3分工作量&#xff1a;3分創新點&#xff1a;3分 &#x1f9ff; 更多資…

【設計模式】建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;使用多個簡單的對象一步一步構建成一個復雜的對象。這種類型的設計模式屬于創建型模式&#xff0c;它提供了一種創建對象的最佳方式。 一個 Builder 類會一步一步構造最終的對象。該 Builder 類是獨立于其他對象的。 介紹 …