激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談spring boot 1.5.4 異常控制

淺談spring boot 1.5.4 異常控制

2020-11-19 10:37Java之家 Java教程

下面小編就為大家?guī)硪黄獪\談spring boot 1.5.4 異常控制。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

spring boot 已經(jīng)做了統(tǒng)一的異常處理,下面看看如何自定義處理異常

1.錯誤碼頁面映射

1.1靜態(tài)頁面

必須配置在 resources/static/error文件夾下,以錯誤碼命名

淺談spring boot 1.5.4 異常控制

下面是404錯誤頁面內(nèi)容,當訪問一個不存在的鏈接的時候,定位到此頁

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>not found</title>
</head>
<body>
<h1>sorry, not found</h1>
<p>
  status code is 404
</p>
 
</body>
</html>

顯示效果

淺談spring boot 1.5.4 異常控制

1.2動態(tài)模板頁面(頁面存放位置亦不能更改,且只有4xx和5xx這兩個名稱)

淺談spring boot 1.5.4 異常控制

示例(5xx.ftl)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>error</title>
</head>
<body>
<h1>server error</h1>
<p>
<div style="color:red;font-size:large">error code: ${status}-${error}</div>
<div style="color:red;font-size:medium">error msg: ${exception!},${message!}</div>
 
<div>
  <div id="trace" style="color:grey;font-size:small;display: none;border: 1px solid black;padding: 10px;">${trace!}</div>
</div>
</p>
</body>
</html>

故意訪問一個拋異常的請求(/test2/throwex)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@controller
@requestmapping("/test2")
public class test2 {
 
  @requestmapping("")
  public string index(){
    return "test";
  }
 
  @requestmapping("/throwex")
  @responsebody
  public string throwex(){
    int a = 3;
    int b=0;
    return string.valueof(a/b);
  }
}

頁面效果

淺談spring boot 1.5.4 異常控制

如果使用ajax訪問這個錯誤請求,則返回json表示的錯誤信息

演示頁面(/test2 -> test.ftl)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title>test</title>
  <script type="text/javascript" src="/js/jquery-2.0.3.min.js"></script>
</head>
<body>
<h1>test page</h1>
<div>
  <button onclick="doajax();">請求異常測試</button>
 
  <div id="msg"></div>
  <textarea id="errormsg" style="color:red;width: 80%;height:300px"></textarea>
</div>
 
 
<script type="text/javascript">
  var doajax = function () {
    $.ajax({
      url:'/test2/throwex',
      async:true,
      type:'get',
      data:{},
      datatype:'json',
      success:function (data) {
        $('#msg').text(data);
      },
      error: function(xhr, textstatus, errorthrown) {
//        alert(xmlhttprequest.status);
//        alert(xmlhttprequest.readystate);
//        alert(textstatus);
        $('#errormsg').text(xhr.responsetext);
      }
    });
  };
</script>
</body>
</html>

訪問test頁面,點擊按鈕,查看效果如下:

淺談spring boot 1.5.4 異常控制

這里分別用網(wǎng)頁瀏覽器和ajax訪問出錯的接口得到不同的結果,一個輸出錯誤頁面,一個輸出錯誤json,這個是由請求的接收類型決定的。

accept:text/html -> 返回錯誤頁面
accept:application/json, text/javascript -> 返回錯誤json
具體實現(xiàn)可查看basicerrorcontroller類

2.自定義錯誤碼到頁面的映射

2.1 靜態(tài)頁面映射配置(定制嵌入容器的時候控制錯誤碼映射關系)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@component
public class customizationbean implements embeddedservletcontainercustomizer{
 
  /**
   * 定制方法一:實現(xiàn)embeddedservletcontainercustomizer
   * @param container
   */
  @override
  public void customize(configurableembeddedservletcontainer container) {
    //container.setport(9000);
  }
 
  /**
   * 定制方法二:注入embeddedservletcontainerfactory
   * @return
   */
  @bean
  public embeddedservletcontainerfactory servletcontainer() {
    tomcatembeddedservletcontainerfactory factory = new tomcatembeddedservletcontainerfactory();
    factory.setport(9001);
    factory.setsessiontimeout(10, timeunit.minutes);
    //優(yōu)先級高于配置在/static/error文件夾里面的404.html頁面
    factory.adderrorpages(new errorpage(httpstatus.not_found, "/error/403.html"));
    return factory;
  }
}

2.2 動態(tài)頁面映射配置

?
1
2
3
4
5
6
7
8
9
@component
public class myerrorviewresolver implements errorviewresolver {
 
  @override
  public modelandview resolveerrorview(httpservletrequest request, httpstatus status, map<string, object> model) {
     return new modelandview("/error/error",model);
  }
 
}

這個自定義viewresolver將替代默認的頁面處理器defaulterrorviewresolver,上述配置將所有錯誤(不區(qū)分錯誤碼)都映射到了錯誤頁面error.ftl,進行統(tǒng)一管理。

新建error.ftl頁面渲染錯誤內(nèi)容

和5xx.ftl類似的配置

3.一些異常配置

#basicerrorcontroller的請求路徑(你可以遇到錯誤后跳轉的路徑,該路徑是一個basicerrorcontroller的請求路徑,映射到它errorhtml或者error方法,由請求接受類型決定,一個返回錯誤頁面,一個返回錯誤json)
#server.error.path=/error
#always include stacktrace(是否包含異常的堆棧信息,默認never,頁面無法獲取到${trace!}的值,可取值never,always,on_trace_param; on_trace_param意思是請求帶上參數(shù) ?trace=true)
server.error.include-stacktrace=always

4.springboot異常處理流程

controller->出錯跳轉->basicerrorcontroller->調用errorhtml方法->geterrorattributes(獲取錯誤屬性返回model)->丟給頁面處理器errorviewresolver

所以你可以定制controller/定制errorattributes/定制errorviewresolver等,實現(xiàn)更加復雜的異常處理

以上這篇淺談spring boot 1.5.4 異常控制就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 密室逃脱第一季免费观看完整在线 | 亚洲成a人在线 | 久久久久久久久91 | 羞羞的| 九草在线视频 | 国产精品一区免费在线观看 | 欧美成年性h版影视中文字幕 | 精品视频 久久久 | www.狠狠插.com | 欧美一级视频在线 | 久久久www免费看片 亚洲综合视频一区 | 蜜桃视频在线观看免费 | 亚洲第一页综合 | 97porn| 中文字幕精品久久 | 国产精品成年片在线观看, 日韩毛片网 | 亚洲视频综合网 | 精品一区二区三区在线播放 | 凹凸成人精品亚洲精品密奴 | 精品一区二区三区在线观看视频 | 《97色伦在色在线播放》 | 国产激情精品一区二区三区 | 成人在线视频精品 | 美乳在线观看 | 久久久久久免费免费 | 成人不卡在线观看 | 中文字幕xxx| 免费亚洲视频在线观看 | 成年免费大片黄在线观看岛国 | 在线免费91| 久久精品免费网站 | 国产精品久久久久久久久久妇女 | 91免费片| 久久伊| 国产99久久久国产精品下药 | qyl在线视频精品免费观看 | 欧美成人鲁丝片在线观看 | 黄色网战入口 | 黄色视频a级毛片 | 色毛片 | 泰剧19禁啪啪无遮挡大尺度 |