91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot 全局異常錯誤頁面的示例分析

發布時間:2021-11-10 10:17:46 來源:億速云 閱讀:124 作者:柒染 欄目:大數據

這篇文章給大家介紹SpringBoot 全局異常錯誤頁面的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

SpringBoot 全局異常錯誤頁面

1. 創建項目,依賴Web 和 thymeleaf

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

2. 準備兩個異常錯誤頁面

在template中創建error文件夾,在error文件夾中創建4xx.html 和 5xx.html

SpringBoot 全局異常錯誤頁面的示例分析

3.準備自定義錯誤處理類

com.zhl.springbootexceptionjunit.controller.MyBasicErrorController

  • SpringBoot 出現異常時會查找 /error 視圖, 如果沒有則會根據錯誤碼查找對應 error/400.html 之類的錯誤靜態頁面

  • 此處重寫ErrorController,實現/error 視圖,根據錯誤類型,跳轉至對應的視圖,由于使用視圖技術,需引用模板引擎(本例用thymeleaf)

package com.zhl.springbootexceptionjunit.controller;import org.springframework.boot.web.servlet.error.ErrorController;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.context.request.ServletWebRequest;import org.springframework.web.context.request.WebRequest;import javax.servlet.http.HttpServletRequest;import java.util.Date;import java.util.HashMap;import java.util.Map;/** * 定制ErrorController,目的是能使SpringBoot找到自己定制的錯誤頁面 * 大部分的代碼BasicController一致,關鍵點是修改錯誤頁面的路徑 */@Controller@RequestMapping(value = "/error")public class MyBasicErrorController implements ErrorController {@RequestMapping(produces = {"text/html"})//返回給瀏覽器    public String handlerError(HttpServletRequest request, Model model){
        WebRequest webRequest = new ServletWebRequest(request);//對request進行包裝,目的是能操作更多的方法        HttpStatus status = this.getStatus(request);//獲取status        String path = (String) webRequest.getAttribute("javax.servlet.error.request_uri", 0);
        String message = (String) webRequest.getAttribute("javax.servlet.error.message", 0);if(message.equals("")){
            message = "No Available Message";
        }//攜帶錯誤數據信息        model.addAttribute("timestamp", new Date());
        model.addAttribute("statusCode", status.value());
        model.addAttribute("error", status.getReasonPhrase());
        model.addAttribute("message", message);
        model.addAttribute("path", path);int i = status.value() / 100;//判斷是4xx還是5xx錯誤        if(i == 4){return "error/4xx";//使用自己定制的錯誤頁面        }else if(i == 5){return "error/5xx";//使用自己定制的錯誤頁面        }return null;
    }@RequestMapping//返回給客戶端    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        WebRequest webRequest = new ServletWebRequest(request);//對request進行包裝,目的是能操作更多的方法        HttpStatus status = this.getStatus(request);//獲取status        Map<String, Object> map = new HashMap<>();if (status == HttpStatus.NO_CONTENT) {return new ResponseEntity(status);
        } else {

            String path = (String) webRequest.getAttribute("javax.servlet.error.request_uri", 0);
            String message = (String) webRequest.getAttribute("javax.servlet.error.message", 0);

            map.put("timestamp", new Date());
            map.put("statusCode", status.value());
            map.put("error", status.getReasonPhrase());
            map.put("message", message);
            map.put("path", path);return new ResponseEntity(map, status);
        }
    }protected HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer)request.getAttribute("javax.servlet.error.status_code");if (statusCode == null) {return HttpStatus.INTERNAL_SERVER_ERROR;
        } else {try {return HttpStatus.valueOf(statusCode);
            } catch (Exception var4) {return HttpStatus.INTERNAL_SERVER_ERROR;
            }
        }
    }@Override    public String getErrorPath() {return "null";
    }
}

4.測試 代碼

com.zhl.springbootexceptionjunit.controller.UsersController

@Controllerpublic class UsersController {@RequestMapping("showinfo")public String showinfo(){
        String str=null;
        str.length();return "ok";
    }
}

測試1,運行時錯誤:

SpringBoot 全局異常錯誤頁面的示例分析

測試2:無資源的情況

SpringBoot 全局異常錯誤頁面的示例分析


關于SpringBoot 全局異常錯誤頁面的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠东县| 荆州市| 行唐县| 诸暨市| 察哈| 万山特区| 长沙县| 广平县| 东平县| 宣恩县| 金沙县| 醴陵市| 那曲县| 揭西县| 揭阳市| 原阳县| 无为县| 准格尔旗| 滦南县| 秦皇岛市| 黔西| 紫云| 南平市| 和硕县| 桐庐县| 桐乡市| 浪卡子县| 华容县| 霍州市| 札达县| 扎鲁特旗| 申扎县| 鄯善县| 潞城市| 金寨县| 西峡县| 安康市| 思茅市| 华池县| 大厂| 富川|