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

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

這篇具有很好參考價值的文章主要介紹了Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、單個控制器異常處理

1.1 控制器方法

1.2 編寫出錯頁面

1.3 測試結果

二、全局異常處理

2.1 一個有異常的控制器類

2.2 全局異常處理器類

2.3 測試結果?

三、自定義異常處理器

3.1 自定義異常處理器

3.2 測試結果

往期專欄&文章相關導讀?

1. Maven系列專欄文章

2. Mybatis系列專欄文章

3. Spring系列專欄文章

4. Spring MVC系列專欄文章???


一、單個控制器異常處理

在系統(tǒng)當中, Dao、Service、Controller層代碼出現(xiàn)都可能拋出異常。如果哪里產生異常就在哪里處理,則會降低開發(fā)效率。所以一般情況下我們會讓異常向上拋出,最終到達DispatcherServlet中,此時SpringMVC提供了異常處理器進行異常處理,這樣可以提高開發(fā)效率

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc處理單個Controller的異常:

1.1 控制器方法

package com.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {

    // 處理單個Controller異常
    @RequestMapping("/t1")
    public String t1(){
        String str = null;
        // str.length();
        // int flag = 1/0;
        int []arr = new int[1];
        arr[2] = 10;
        return "index";
    }

    /**
     * 異常處理方法
     * @param ex 異常對象
     * @param model 模型對象
     * @return
     */
    // 添加@ExceptionHandler,表示該方法是處理異常的方法,屬性為處理的異常類
    @ExceptionHandler({java.lang.NullPointerException.class,java.lang.ArithmeticException.class})
    public String exceptionHandler1(Exception ex, Model model){
        // 向模型中添加異常對象
        model.addAttribute("msg",ex);
        // 跳轉到異常頁面
        return "error";
    }

    // 方法一不能處理的異常交給方法二處理
    @ExceptionHandler({java.lang.Exception.class})
    public String exceptionHandler2(Exception ex,Model model){
        model.addAttribute("msg",ex);
        return "error2";
    }
}

從控制器方法我們可以知道,如果出現(xiàn)算術錯誤類的話則返回錯誤頁面1,否則都返回給錯誤頁面2.。并且把錯誤信息傳到前端。

1.2 編寫出錯頁面

這里編寫兩個錯誤頁面,為了是測試控制器是否成功知道出現(xiàn)的是哪一個錯誤。

錯誤頁面1

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>出錯了!</title>
</head>
<body>
<h3>ERROR 發(fā)生異常! ${msg}</h3>
</body>
</html>

嚴重錯誤頁面2

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>出錯了!</title>
</head>
<body>
<h3>ERROR2 發(fā)生嚴重異常! ${msg}</h3>
</body>
</html>

1.3 測試結果

OK,這里測試運行一下,上面的應該返回的是錯誤頁面2,因為出現(xiàn)的錯誤是數組越界訪問。

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc

OK,我們再換一個錯誤,注釋掉以下幾行,再重新運行一遍是否跳到錯誤頁面1,因為這里出現(xiàn)的算術錯誤。

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc

OK,可以看到這里確實返回錯誤頁面1出來了

二、全局異常處理

在控制器中定義異常處理方法只能處理該控制器類的異常,要想處理所有控制器的異常,需要定義全局異常處理類。如何體現(xiàn)這個全局異常處理呢,我們需要新建一個異常類,一個全局異常處理類,錯誤頁面就按照上面兩個即可。

2.1 一個有異常的控制器類

這里就用一個數組越界的錯誤類。

package com.example.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

// 編寫另一個有異常的控制器類
@Controller
public class MyController2 {
    @RequestMapping("/t2")
    public String t1(){
        String str = null;
        // str.length();
        // int flag = 1/0;
        int []arr = new int[1];
        arr[2] = 10;
        return "index";
    }
}

2.2 全局異常處理器類

從控制器方法我們可以知道,如果出現(xiàn)算術錯誤類的話則返回錯誤頁面1,否則都返回給錯誤頁面2.。并且把錯誤信息傳到前端。

package com.example.controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

// 全局異常處理類:添加@ControllerAdvice
@ControllerAdvice
public class GlobalExceptionHandler {
    /**
     * 異常處理方法
     * @param ex 異常對象
     * @param model 模型對象
     * @return
     */
    // 添加@ExceptionHandler,表示該方法是處理異常的方法,屬性為處理的異常類
    @ExceptionHandler({java.lang.NullPointerException.class,java.lang.ArithmeticException.class})
    public String exceptionHandler1(Exception ex, Model model){
        // 向模型中添加異常對象
        model.addAttribute("msg",ex);
        // 跳轉到異常頁面
        return "error";
    }

    // 方法一不能處理的異常交給方法二處理
    @ExceptionHandler({java.lang.Exception.class})
    public String exceptionHandler2(Exception ex,Model model){
        model.addAttribute("msg",ex);
        return "error2";
    }
}

2.3 測試結果?

OK,訪問路徑:http://localhost:8080/t2

OK,確實和我們預料的一樣,全局異常處理類發(fā)揮了作用。

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc

三、自定義異常處理器

以上方式都是使用的SpringMVC自帶的異常處理器進行異常處理,我們還可以自定義異常處理器處理異常:

3.1 自定義異常處理器

package com.example.controller;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 自定義異常處理器實現(xiàn)HandlerExceptionResolver接口,并放入Spring容器中
@Component
public class MyExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ModelAndView modelAndView = new ModelAndView();
        if(e instanceof NullPointerException){
            modelAndView.setViewName("error");
        }
        else {
            modelAndView.setViewName("error2");
            System.out.println("我自己的異常處理器");
        }
        modelAndView.addObject("msg",e);
        return modelAndView;
    }
}

3.2 測試結果

Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】,ssm框架,# Spring MVC,java,maven,spring,mvc

OK,為了體現(xiàn)自定義的異常處理器,我把全局異常處理器刪除再重新啟動服務器,訪問上面那個有異常控制類。可以看到自定義異常處理類發(fā)揮了作用。

往期專欄&文章相關導讀?

?????大家如果對于本期內容有什么不了解的話也可以去看看往期的內容,下面列出了博主往期精心制作的Maven,Mybatis等專欄系列文章,走過路過不要錯過哎!如果對您有所幫助的話就點點贊,收藏一下啪。其中Spring專欄有些正在更,所以無法查看,但是當博主全部更完之后就可以看啦。

1. Maven系列專欄文章

Maven系列專欄 Maven工程開發(fā)
Maven聚合開發(fā)【實例詳解---5555字】

2. Mybatis系列專欄文章

Mybatis系列專欄 MyBatis入門配置
Mybatis入門案例【超詳細】
MyBatis配置文件 —— 相關標簽詳解
Mybatis模糊查詢——三種定義參數方法和聚合查詢、主鍵回填
Mybatis動態(tài)SQL查詢 --(附實戰(zhàn)案例--8888個字--88質量分)
Mybatis分頁查詢——四種傳參方式
Mybatis一級緩存和二級緩存(帶測試方法)
Mybatis分解式查詢
Mybatis關聯(lián)查詢【附實戰(zhàn)案例】
MyBatis注解開發(fā)---實現(xiàn)增刪查改和動態(tài)SQL
MyBatis注解開發(fā)---實現(xiàn)自定義映射關系和關聯(lián)查詢

3. Spring系列專欄文章

Spring系列專欄 Spring IOC 入門簡介【自定義容器實例】
IOC使用Spring實現(xiàn)附實例詳解
Spring IOC之對象的創(chuàng)建方式、策略及銷毀時機和生命周期且獲取方式
Spring DI簡介及依賴注入方式和依賴注入類型
Spring IOC相關注解運用——上篇
Spring IOC相關注解運用——下篇
Spring AOP簡介及相關案例
注解、原生Spring、SchemaBased三種方式實現(xiàn)AOP【附詳細案例】
Spring事務簡介及相關案例
Spring 事務管理方案和事務管理器及事務控制的API
Spring 事務的相關配置、傳播行為、隔離級別及注解配置聲明式事務

4. Spring MVC系列專欄文章???

SpringMVC系列專欄 Spring MVC簡介附入門案例
Spring MVC各種參數獲取及獲取方式自定義類型轉換器和編碼過濾器
Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器
Spring MVC處理響應附案例詳解
Spring MVC相關注解運用 —— 上篇

Spring MVC相關注解運用 —— 中篇文章來源地址http://www.zghlxwxcb.cn/news/detail-572328.html

Spring MVC相關注解運用 —— 下篇
Spring MVC多種情況下的文件上傳
Spring MVC異步上傳、跨服務器上傳和文件下載
Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】
Spring MVC攔截器和跨域請求
SSM整合案例【C站講解最詳細流程的案例】

到了這里,關于Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

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

相關文章

  • 【微服務網關---Gateway 的全局異常處理器】

    【微服務網關---Gateway 的全局異常處理器】

    Gateway網關統(tǒng)一全局異常處理操作 方便前端看到 這里要精細化翻譯,默認返回用戶是看不懂的 所以需要配置一個 Gateway 的全局異常處理器 如果沒有網關全局異常的 會如下截圖 代碼如下: 代碼如下: 代碼如下: 以上就是今天要講的內容,本文僅僅簡單 所以需要配置一個

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

    Spring異常處理器

    ?問題: ? 程序允許不免的在各層都可能會產生異常,我們該如何處理這些異常? 如果只是在方法里面單獨使用 try… catch… 語句去一個一個的進行捕捉處理的話,那毫無疑問是不現(xiàn)實的,因為異常數量是非常龐大的并且對于異常的出現(xiàn)種類是不可預料的,于是我們可以使用

    2024年02月13日
    瀏覽(19)
  • Spring Boot 如何自定義異常處理器

    Spring Boot 如何自定義異常處理器

    在Spring Boot應用程序中,異常處理是一個非常重要的方面。如果您不處理異常,應用程序可能會崩潰或出現(xiàn)不可預料的行為。默認情況下,Spring Boot將未捕獲的異常返回給客戶端。這通常不是期望的行為,因為客戶端可能無法理解異常信息。在本文中,我們將介紹如何在Sprin

    2024年02月06日
    瀏覽(21)
  • Springboot +spring security,自定義認證和授權異常處理器

    在Spring Security中異常分為兩種: AuthenticationException 認證異常 AccessDeniedException 權限異常 我們先給大家演示下如何自定義異常處理器,然后再結合源碼幫助大家進行分析 如何創(chuàng)建一個SpringSecurity項目,前面文章已經有說明了,這里就不重復寫了。 3.1配置SecurityConfig 這里主要是

    2024年02月07日
    瀏覽(19)
  • SSM整合(三) | 異常處理器 - 項目異常的處理方案

    SSM整合(三) | 異常處理器 - 項目異常的處理方案

    異常處理器快速入門 程序開發(fā)過程中不可避免的會遇到異常現(xiàn)象 出現(xiàn)異?,F(xiàn)象的常見位置與常見原因如下 : 框架內部拋出的異常:因使用不規(guī)范導致 數據層拋出的異常:因外部服務器故障導致(例如:服務器訪問超時) 業(yè)務層拋出的異常:因業(yè)務邏輯書寫錯誤導致(例如

    2024年02月02日
    瀏覽(20)
  • SpringMVC之異常處理器

    SpringMVC提供了一個處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:HandlerExceptionResolver。 HandlerExceptionResolver接口的實現(xiàn)類有:DefaultHandlerExceptionResolver(默認的)和 SimpleMappingExceptionResolver(自定義的)。 這里配置了兩個異常,出現(xiàn)其中一個異常后跳轉到error頁面。 以上就是異

    2024年02月10日
    瀏覽(24)
  • 13、SpringMVC之異常處理器

    13、SpringMVC之異常處理器

    創(chuàng)建名為spring_mvc_exception的新module,過程參考9.1節(jié)和9.5節(jié) SpringMVC 提供了一個處理控制器方法執(zhí)行異常的接口:HandlerExceptionResolver HandlerExceptionResolver 接口的實現(xiàn)類有:DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver 實際工作中,有時使用 SimpleMappingExceptionResolver 異常解析器

    2024年02月05日
    瀏覽(25)
  • 解密Spring MVC異常處理:從局部到全局,打造穩(wěn)固系統(tǒng)的關鍵步驟

    解密Spring MVC異常處理:從局部到全局,打造穩(wěn)固系統(tǒng)的關鍵步驟

    ??前言 在現(xiàn)代軟件開發(fā)中,異常處理是不可或缺的一部分,它能夠有效地提高系統(tǒng)的穩(wěn)定性和健壯性。在Spring MVC框架中,異常處理機制起著至關重要的作用,它允許開發(fā)者在程序運行過程中捕獲、處理和報告異常,從而保障用戶體驗和系統(tǒng)可靠性。本文將帶您深入探索Spr

    2024年02月10日
    瀏覽(18)
  • SpringMVC的攔截器和異常處理器

    目錄 lerInterceptor 攔截器 1、攔截器的作用 2、攔截器的創(chuàng)建 3、攔截器的三個抽象方法 4、攔截器的配置 5、多個攔截器的執(zhí)行順序 SpringMVC的異常處理器 1、異常處理器概述 2、基于配置文件的異常處理 3、基于注解的異常處理 攔截器的作用時機 SpringMVC的攔截器作用于? 控制器

    2024年02月02日
    瀏覽(40)
  • SpringMVC之攔截器和異常處理器

    學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學習某技術知識點… 一個人摸索學習很難堅持,想組團高效學習… 想寫博客但無從下手,急需寫作干貨注入能量… 熱愛寫作,愿意讓自己成為更好

    2024年02月03日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包