国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

公益網(wǎng)站建設(shè)需求/大數(shù)據(jù)分析師

公益網(wǎng)站建設(shè)需求,大數(shù)據(jù)分析師,高端網(wǎng)站建設(shè)jm3q,申請網(wǎng)站域名目錄 一、單個控制器異常處理 1.1 控制器方法 1.2 編寫出錯頁面 1.3 測試結(jié)果 二、全局異常處理 2.1 一個有異常的控制器類 2.2 全局異常處理器類 2.3 測試結(jié)果 三、自定義異常處理器 3.1 自定義異常處理器 3.2 測試結(jié)果 往期專欄&文章相關(guān)導(dǎo)讀 1. Maven系列…

目錄

一、單個控制器異常處理

1.1 控制器方法

1.2 編寫出錯頁面

1.3 測試結(jié)果

二、全局異常處理

2.1 一個有異常的控制器類

2.2 全局異常處理器類

2.3 測試結(jié)果?

三、自定義異常處理器

3.1 自定義異常處理器

3.2 測試結(jié)果

往期專欄&文章相關(guān)導(dǎo)讀?

1. Maven系列專欄文章

2. Mybatis系列專欄文章

3. Spring系列專欄文章

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


一、單個控制器異常處理

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

處理單個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);// 跳轉(zhuǎn)到異常頁面return "error";}// 方法一不能處理的異常交給方法二處理@ExceptionHandler({java.lang.Exception.class})public String exceptionHandler2(Exception ex,Model model){model.addAttribute("msg",ex);return "error2";}
}

從控制器方法我們可以知道,如果出現(xiàn)算術(shù)錯誤類的話則返回錯誤頁面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>

嚴(yán)重錯誤頁面2

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

1.3 測試結(jié)果

OK,這里測試運(yùn)行一下,上面的應(yīng)該返回的是錯誤頁面2,因?yàn)槌霈F(xiàn)的錯誤是數(shù)組越界訪問。

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

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

二、全局異常處理

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

2.1 一個有異常的控制器類

這里就用一個數(shù)組越界的錯誤類。

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)算術(shù)錯誤類的話則返回錯誤頁面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);// 跳轉(zhuǎn)到異常頁面return "error";}// 方法一不能處理的異常交給方法二處理@ExceptionHandler({java.lang.Exception.class})public String exceptionHandler2(Exception ex,Model model){model.addAttribute("msg",ex);return "error2";}
}

2.3 測試結(jié)果?

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

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

三、自定義異常處理器

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

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;// 自定義異常處理器實(shí)現(xiàn)HandlerExceptionResolver接口,并放入Spring容器中
@Component
public class MyExceptionHandler implements HandlerExceptionResolver {@Overridepublic 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 測試結(jié)果

OK,為了體現(xiàn)自定義的異常處理器,我把全局異常處理器刪除再重新啟動服務(wù)器,訪問上面那個有異??刂祁???梢钥吹阶远x異常處理類發(fā)揮了作用。

往期專欄&文章相關(guān)導(dǎo)讀?

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

1. Maven系列專欄文章

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

2. Mybatis系列專欄文章

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

3. Spring系列專欄文章

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

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

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

Spring MVC相關(guān)注解運(yùn)用 —— 中篇

Spring MVC相關(guān)注解運(yùn)用 —— 下篇
Spring MVC多種情況下的文件上傳
Spring MVC異步上傳、跨服務(wù)器上傳和文件下載
Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】
Spring MVC攔截器和跨域請求
SSM整合案例【C站講解最詳細(xì)流程的案例】
http://m.aloenet.com.cn/news/423.html

相關(guān)文章:

  • 沈陽網(wǎng)站建設(shè)建設(shè)公司/怎么創(chuàng)建網(wǎng)站平臺
  • 霸州放心的網(wǎng)絡(luò)建站/愛戰(zhàn)網(wǎng)關(guān)鍵詞查詢網(wǎng)站
  • 寧波免費(fèi)網(wǎng)頁制作模板/曹操博客seo
  • app store官方正版下載/班級優(yōu)化大師簡介
  • 怎么防止網(wǎng)站被鏡像/nba賽季排名
  • 政府網(wǎng)站建設(shè)工作總結(jié)報告/網(wǎng)店代運(yùn)營公司靠譜嗎
  • 廣州做營銷型網(wǎng)站/網(wǎng)絡(luò)營銷師證書含金量
  • 網(wǎng)站怎樣續(xù)費(fèi)/南寧seo教程
  • 制作公司網(wǎng)站哪個好/廣告投放運(yùn)營主要做什么
  • 果女做拍的視頻網(wǎng)站/網(wǎng)站優(yōu)化外包費(fèi)用
  • 企業(yè)網(wǎng)站設(shè)計中應(yīng)注意產(chǎn)品發(fā)布功能優(yōu)化/種子搜索引擎 磁力天堂
  • 桂林手機(jī)網(wǎng)站制作/官網(wǎng)設(shè)計公司
  • 網(wǎng)站技術(shù)可行性/立即優(yōu)化在哪里
  • 全國做網(wǎng)站的公司/做推廣哪個平臺效果好
  • 簡單展示網(wǎng)站模板/百度搜索官網(wǎng)
  • wordpress頁面markdown/seo品牌
  • 三明網(wǎng)站優(yōu)化/推廣優(yōu)化網(wǎng)站排名
  • 有哪些攝影網(wǎng)站/站長工具源碼
  • 建設(shè)網(wǎng)站成本預(yù)算/青島疫情最新情況
  • 外貿(mào)網(wǎng)站使用攻略/自己開網(wǎng)店怎么運(yùn)營
  • 企業(yè)網(wǎng)站要更新文章嗎/域名注冊查詢?nèi)肟?/a>
  • 支付網(wǎng)站建設(shè)費(fèi)/正規(guī)的培訓(xùn)學(xué)校
  • 網(wǎng)站關(guān)鍵詞庫如何做/惠州seo推廣外包
  • 做網(wǎng)站jsp和php/成功營銷十大經(jīng)典案例
  • 網(wǎng)站子頁面如何做seo/信息流優(yōu)化師工作總結(jié)
  • 怎么做一簾幽夢網(wǎng)站/全渠道營銷管理平臺
  • 珠海網(wǎng)站建設(shè)小程序/百度搜索網(wǎng)站
  • 武漢企業(yè)建站公司/百度官方電話號碼
  • 二手車交易網(wǎng)站怎么做/百度推廣網(wǎng)址是多少
  • 網(wǎng)站設(shè)計服務(wù)有哪些/網(wǎng)頁seo