国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot學習隨筆- 后端實現全局異常處理(HandlerExceptionResolver),前后端解決跨域問題(@CrossOrigin(局部解決)自定義跨域配置類(全局))

這篇具有很好參考價值的文章主要介紹了Spring Boot學習隨筆- 后端實現全局異常處理(HandlerExceptionResolver),前后端解決跨域問題(@CrossOrigin(局部解決)自定義跨域配置類(全局))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

學習視頻:【編程不良人】2021年SpringBoot最新最全教程

第十七章、異常處理

異常處理作用:用來解決整合系統(tǒng)中任意一個控制器拋出異常時的統(tǒng)一處理入口

傳統(tǒng)方式

傳統(tǒng)單體架構下的處理方式

  • 配置全局異常處理類

    @Component
    public class GlobalExceptionResolver implements HandlerExceptionResolver {
        @Override
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            System.out.println("進入全局異常處理");
            System.out.println("當前異常為 = " + ex);
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.setViewName("500"); //跳轉錯誤頁面
            return modelAndView;
        }
    }
    

    resolveException:當控制器方法出現異常時,如果該方法沒有try...catch,則會進入當前方法

  • 針對不同異常返回不同的錯誤顯示頁面

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        System.out.println("進入全局異常處理");
        System.out.println("當前異常為 = " + ex);
        ModelAndView modelAndView = new ModelAndView();
        // 針對不同異常類型跳轉不同頁面
        **if (ex instanceof UserNameNotFoundException) {
            modelAndView.setViewName("error");
            return modelAndView;
        }**
        modelAndView.setViewName("500"); //跳轉錯誤頁面
        return modelAndView;
    }
    

前后端分離開發(fā)異常處理

  • **@ControllerAdvice**

    @ControllerAdvice是Spring框架中用于全局處理異常的注解,修飾類,可以定義全局性的處理器方法,用于處理應用程序中所有Controller層拋出的異常。

    **@ControllerAdvice(value="com.baizhi.controller")** 可以通過value屬性設置生效的包

  • **@ExceptionHandler**

    @ExceptionHandler注解用于處理異常的注解。修飾方法,用于捕獲特定類型的異常并進行處理。

    **@ExceptionHandler(value = {Exception.class,``UserNameNotFoundException.class})** 通過value屬性定義多個異常進行處理

@ControllerAdvice(value = "com.baizhi.controller")
public class GlobalExceptionResolver {

    // 指定自定義異?;蚱渌惓P枰祷夭煌慕Y果
    @ExceptionHandler(value = UserNameNotFoundException.class)
    @ResponseBody
    public ResponseEntity<String> exceptionHandlers(Exception e) {
        System.out.println("進入非法參數異常處理");
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }

    // 處理所以異常
    @ExceptionHandler(value = Exception.class) //修飾方法,作用:處理指定異常,value屬性:指定處理異常類型
    @ResponseBody
    public ResponseEntity<String> exceptionHandler(Exception e) {
        System.out.println("進入自定義異常處理");
        return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
    }

}

第十八章、CORS

CORS(跨源資源共享)是一種用于解決跨域請求問題的機制。

在Web開發(fā)中,由于瀏覽器的同源策略,不同源(域名、協(xié)議、端口號任何一個不同)之間的前端JavaScript代碼無法直接進行跨域請求。

CORS的核心思想是在服務器端響應中添加一些特定的HTTP頭部,以允許來自其他源的請求訪問服務器資源。這些頭部包括Access-Control-Allow-Origin、Access-Control-Allow-MethodsAccess-Control-Allow-Headers等。

  • 同源策略

    是瀏覽器的一個安全功能,不同源的客戶端腳本在沒有明確授權的情況下,不能讀寫對方資源。同源策略是瀏覽器安全的基石

  • 什么是源 origin

    源就是協(xié)議、域名和端口號。例如:http://www.baidu.com:80這個url

    協(xié)議:http

    域名:www.baidu.com

    端口:80

  • 哪些操作不會受到同源限制

    1. script:src=””,
  • 哪些操作會受到同源限制

    ajax

    出現跨域請求

  • 示例

    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            function test(){
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function (){
                    if (xhr.status == 200 && xhr.readyState == 4) {
                        console.log(xhr.responseText);
                        document.getElementById("msg").innerText="返回結果為:"+xhr.responseText;
                    }
                }
                xhr.open("GET", "http://localhost:8989/demo");
                xhr.send();
            }
        </script>
    </head>
    <body>
        <h1>測試跨域</h1>
        <input type="button" value="發(fā)送跨域請求" onclick="test()">
        <h4 id="msg"></h4>
    </body>
    </html>
    

    我們使用idea內置服務器打開此靜態(tài)網頁測試,會出現跨域錯誤,因為不同源

    Spring Boot學習隨筆- 后端實現全局異常處理(HandlerExceptionResolver),前后端解決跨域問題(@CrossOrigin(局部解決)自定義跨域配置類(全局))

SpringBoot解決跨域問題

  • 局部解決跨域

    **@CrossOrigin**:修飾類和方法,代表被修飾的所有方法都能允許進行跨域請求

    @RestController
    @RequestMapping("demo")
    **@CrossOrigin**
    public class DemoController {
        @GetMapping
        public ResponseEntity<String> demo() {
            System.out.println("demo ok");
            return new ResponseEntity<>("響應demo ok", HttpStatus.OK);
        }
    
  • 全局解決跨域

    自定義跨域配置類

    **import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
    import org.springframework.web.filter.CorsFilter;**
    
    @Configuration
    public class CorsConfig {
        @Bean
        public CorsFilter corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            corsConfiguration.addAllowedOrigin("*"); // 允許任何域名使用
            corsConfiguration.addAllowedHeader("*"); // 允許任何頭
            corsConfiguration.addAllowedMethod("*"); // 允許任何方法
            source.registerCorsConfiguration("/**", corsConfiguration);// 配置所有請求
            return new CorsFilter(source);
        }
    }
    

注意,只能使用一種跨域解決方法,兩種都用會出現問題

下一章:Spring Boot學習隨筆- Jasypt加密數據庫用戶名和密碼以及解密文章來源地址http://www.zghlxwxcb.cn/news/detail-760645.html

到了這里,關于Spring Boot學習隨筆- 后端實現全局異常處理(HandlerExceptionResolver),前后端解決跨域問題(@CrossOrigin(局部解決)自定義跨域配置類(全局))的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring Boot 優(yōu)雅實現統(tǒng)一數據返回格式+統(tǒng)一異常處理+統(tǒng)一日志處理

    Spring Boot 優(yōu)雅實現統(tǒng)一數據返回格式+統(tǒng)一異常處理+統(tǒng)一日志處理

    ????????在我們的項目開發(fā)中,我們都會對數據返回格式進行統(tǒng)一的處理,這樣可以方便前端人員取數據,當然除了正常流程的數據返回格式需要統(tǒng)一以外,我們也需要對異常的情況進行統(tǒng)一的處理,以及項目必備的日志。 ????????在項目開發(fā)中返回的是json格式的數據

    2024年01月19日
    瀏覽(30)
  • Spring Boot學習隨筆- 攔截器實現和配置(HandlerInterceptor、addInterceptors)、jar包部署和war包部署

    Spring Boot學習隨筆- 攔截器實現和配置(HandlerInterceptor、addInterceptors)、jar包部署和war包部署

    學習視頻:【編程不良人】2021年SpringBoot最新最全教程 攔截器 :Interceptor 攔截 中斷 類似于javaweb中的Filter,不過沒有Filter那么強大 作用 Spring MVC的攔截器是一種用于在請求處理過程中進行預處理和后處理的機制。攔截器可以在請求到達控制器之前和之后執(zhí)行一些操作,例如日

    2024年02月02日
    瀏覽(24)
  • Spring Boot學習隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實現(PaginationInterceptor )、更新和刪除詳細方法

    學習視頻:【編程不良人】Mybatis-Plus整合SpringBoot實戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! 自定義mapper文件是為了應對一些更復雜的查詢場景,首先先配置映射路徑 由于這里的mapper文件放在java文件夾中,所以要在pom.xml里進行配置 mapper 測試 在MyBatis Plus中, 物理分頁 和 內

    2024年02月03日
    瀏覽(25)
  • Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】

    Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】

    目錄 一、單個控制器異常處理 1.1 控制器方法 1.2 編寫出錯頁面 1.3 測試結果 二、全局異常處理 2.1 一個有異常的控制器類 2.2 全局異常處理器類 2.3 測試結果? 三、自定義異常處理器 3.1 自定義異常處理器 3.2 測試結果 往期專欄文章相關導讀? 1. Maven系列專欄文章 2. Mybatis系列

    2024年02月16日
    瀏覽(28)
  • Spring MVC配置全局異常處理器?。?!

    Spring MVC配置全局異常處理器!??!

    為什么要使用全局異常處理器:如果不加以異常處理,錯誤信息肯定會拋在瀏覽器頁面上,這樣很不友好,所以必須進行異常處理。 系統(tǒng)的dao、service、controller出現都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理,如下圖: 結果展示: ?

    2024年01月15日
    瀏覽(16)
  • Spring MVC文件上傳及全局異常處理器

    編寫controller 在index.jsp里面定義超鏈接 如果不加以異常處理,錯誤信息肯定會拋在瀏覽器頁面上,這樣很不友好,所以必須進行異常處理。 系統(tǒng)的dao、service、controller出現都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理,如下圖: 編寫c

    2024年01月18日
    瀏覽(20)
  • Spring Boot 統(tǒng)一功能處理(攔截器實現用戶登錄權限的統(tǒng)一校驗、統(tǒng)一異常返回、統(tǒng)一數據格式返回)

    Spring Boot 統(tǒng)一功能處理(攔截器實現用戶登錄權限的統(tǒng)一校驗、統(tǒng)一異常返回、統(tǒng)一數據格式返回)

    目錄 1. 用戶登錄權限校驗 1.1 最初用戶登錄權限效驗 1.2 Spring AOP 用戶統(tǒng)?登錄驗證 1.3 Spring 攔截器 (1)創(chuàng)建自定義攔截器 (2)將自定義攔截器添加到系統(tǒng)配置中,并設置攔截的規(guī)則 1.4 練習:登錄攔截器 (1)實現 UserController 實體類 (2)返回的登錄頁面:login.html (3)實

    2024年02月12日
    瀏覽(58)
  • Spring Boot異常處理

    Spring Boot異常處理

    ????????SpringBoot默認的處理異常的機制:SpringBoot 默認的已經提供了一套處理異常的機制。一旦程序中出現了異常 SpringBoot 會向/error 的 url 發(fā)送請求。在 springBoot 中提供了一個叫 BasicErrorController 來處理/error 請求,然后跳轉到默認顯示異常的頁面來展示異常信息。 如 果我

    2024年01月17日
    瀏覽(20)
  • Spring Boot異常處理!??!

    Spring Boot異常處理?。?!

    SpringBoot默認的處理異常的機制:SpringBoot 默認的已經提供了一套處理異常的機制。一旦程序中出現了異常 SpringBoot 會向/error 的 url 發(fā)送請求。在 springBoot 中提供了一個叫 BasicErrorController 來處理/error 請求,然后跳轉到默認顯示異常的頁面來展示異常信息 如 果我 們 需 要 將 所

    2024年01月20日
    瀏覽(17)
  • 記錄spring boot 異常處理

    這個異常通常表示在映射文件中出現了重復的別名定義 命名規(guī)范:在定義別名時,建議采用一致的命名規(guī)范。例如,使用首字母大寫的駝峰命名法或者全小寫的下劃線命名法,這樣可以避免不同開發(fā)人員或團隊在命名時產生沖突。 預留前綴:可以在別名前加上特定的前綴,

    2024年01月21日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包