1、总览

2、代码

1)、pom.xml

这里注意:springboot 2.2.0以后默认的freemarker文件后缀为:ftlh。本例用的是2.2.1,所以后缀为ftlh

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.projectlombok</groupId>
  9. <artifactId>lombok</artifactId>
  10. <optional>true</optional>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-tomcat</artifactId>
  15. <scope>provided</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-test</artifactId>
  20. <scope>test</scope>
  21. </dependency>
  22.  
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-freemarker</artifactId>
  26. </dependency>
  27.  
  28. </dependencies>

2)、application.properties

  1. #必须关闭whitelabel,否则无法导航到错误ftlh页面上
  2. server.error.whitelabel.enabled=false
  3. server.error.include-stacktrace=always

3)、java代码,与https://www.cnblogs.com/yaoyuan2/p/11873110.html一致

4)、5xx.ftlh

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <style>
  5. table td{
  6. vertical-align:top;
  7. border:solid 1px #888;
  8. padding:10px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <h1>My FreeMarker 5xx Error Page</h1>
  14. <table>
  15. <tr>
  16. <td>Date</td>
  17. <td>${timestamp?datetime}</td>
  18. </tr>
  19. <tr>
  20. <td>Error</td>
  21. <td>${error}</td>
  22. </tr>
  23. <tr>
  24. <td>Status</td>
  25. <td>${status}</td>
  26. </tr>
  27. <tr>
  28. <td>Message</td>
  29. <td>${message}</td>
  30. </tr>
  31. <tr>
  32. <td>Exception</td>
  33. <td>${exception!""}</td>
  34. </tr>
  35. <tr>
  36. <td>Trace</td>
  37. <td>
  38. <pre>${trace}</pre>
  39. </td>
  40. </tr>
  41. </table>
  42. </body>
  43. </html>

注意:在freemarker中${exception}是空的,导致出错,进而执行不到前模板页面了。因此,此处加上了!"",表示为空或找不到时为""。

5)、404.ftlh

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <style>
  5. table td{
  6. vertical-align:top;
  7. border:solid 1px #888;
  8. padding:10px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <h1>My FreeMarker 404 Error Page</h1>
  14. <table>
  15. <tr>
  16. <td>Date</td>
  17. <td>${timestamp?datetime}</td>
  18. </tr>
  19. <tr>
  20. <td>Error</td>
  21. <td>${error}</td>
  22. </tr>
  23. <tr>
  24. <td>Status</td>
  25. <td>${status}</td>
  26. </tr>
  27. <tr>
  28. <td>Message</td>
  29. <td>${message}</td>
  30. </tr>
  31. <tr>
  32. <td>Exception</td>
  33. <td>${exception!"No exception thrown"}</td>
  34. </tr>
  35. <tr>
  36. <td>Trace</td>
  37. <td>
  38. <pre>${trace!"No Stacktrace available"}</pre>
  39. </td>
  40. </tr>
  41. </table>
  42. </body>
  43. </html>

6)、error.ftlh

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <style>
  5. table td{
  6. vertical-align:top;
  7. border:solid 1px #888;
  8. padding:10px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <h1>My FreeMarker Custom Global Error Page</h1>
  14. <table>
  15. <tr>
  16. <td>Date</td>
  17. <td>${timestamp?datetime}</td>
  18. </tr>
  19. <tr>
  20. <td>Error</td>
  21. <td>${error}</td>
  22. </tr>
  23. <tr>
  24. <td>Status</td>
  25. <td>${status}</td>
  26. </tr>
  27. <tr>
  28. <td>Message</td>
  29. <td>${message}</td>
  30. </tr>
  31. <tr>
  32. <td>Exception</td>
  33. <td>${exception!"No exception"}</td>
  34. </tr>
  35. <tr>
  36. <td>Trace</td>
  37. <td>
  38. <pre>${trace!"No trace"}</pre>
  39. </td>
  40. </tr>
  41. </table>
  42. </body>
  43. </html>

3、执行

总结:

1、目录结构为:

templates

|_error.ftlh

|_error

  |_5xx.ftlh

  |_404.ftlh

2、application.properties中,必须加入:

  1. server.error.whitelabel.enabled=false

如果想显示trace,也要加入:

  1. server.error.include-stacktrace=always

springboot - 映射HTTP Response Status Codes 到 FreeMarker Error页面的更多相关文章

  1. springboot - 映射HTTP Response Status Codes 到 静态 HTML页面

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...

  2. springboot - 映射 HTTP Response Status Codes 到自定义 JSP Error 页面

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...

  3. HTTP状态码(HTTP Status codes)简介

    HTTP可能大家都熟悉,就是超文本传输协议.浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),把我们的请求(HTTP Request)传递给服务器,服务 ...

  4. HTTP response status

    The status code is a 3-digit number: 1xx (Informational): Request received, server is continuing the ...

  5. C#、JAVA操作Hadoop(HDFS、Map/Reduce)真实过程概述。组件、源码下载。无法解决:Response status code does not indicate success: 500。

    一.Hadoop环境配置概述 三台虚拟机,操作系统为:Ubuntu 16.04. Hadoop版本:2.7.2 NameNode:192.168.72.132 DataNode:192.168.72. ...

  6. IIS SMTP status codes

    Here are the meaning of SMTP status codes. Status Code Description 211 System status, or system help ...

  7. HTTP常见返回代码(HTTP Status codes)的分类和含义

    HTTP错误主要分成三类:用户设备问题.Web服务器问题和连接问题.当客户端向Web服务器发送一个HTTP请求时,服务器都会返回一个响应代码.而这些响应代码主要分成五类. HTTP状态码中定义了5大类 ...

  8. returned a response status of 403 OR 409

    当我们使用jersy把图片上传到我们的图片服务器中[tomcat],我们可能会有以下的错误: returned a response status of 403 OR 409 403和409我都遇到过 ...

  9. RobotFramework下的http接口自动化Get Response Status 关键字的使用

    Get Response Status 关键字用来获取http请求返回的http状态码. 示例1:访问苏宁易购网站上的http推荐接口,使用Get Response Status 关键字来获取返回的h ...

随机推荐

  1. main.js index.html与app.vue三者关系详解

    main.js index.html与app.vue三者关系详解 2019年01月23日 11:12:15 Pecodo 阅读数 186   main.js与index.html是nodejs的项目启 ...

  2. 在IDEA中如何使用tomcat部署项目

    1.首先,你得先建个Java 项目,然后next 2.新建完项目后,然后右击项目,选择“Add Framework Support...” 3.将Web Application 前的框勾选起来,然后点 ...

  3. 「NOIP2011」观光公交

    传送门 Luogu 解题思路 有点麻烦,幸好 \(O(n^2)\) 能过... 贪心地想一想,我们如果要用加速器,肯定是要选择车上人数最多的时段加速. 但是我们就会面临这样的情况: 加速了,带来了增益 ...

  4. [Struts]Token 使用及原理

      Struts Token 使用 1,先在一个Action中,调用saveToken(HttpServletRequest request)方法.然后转向带有表单的JSP页面. 2,在JSP页面提交 ...

  5. Jquery属性操作、添加类

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. ElasticSearch学习,入门篇(一)

    概念解析 1.什么是搜索 搜索就是在任何场景下,找寻你想要的信息,这个时候你会输入一段要搜索的关键字,然后期望找到这个关键字相关的有效信息. 2.如果用数据库做搜素会怎么样 select * from ...

  7. Python测试进阶——(7)动手编写Bash脚本启动Python监控程序并传递PID

    如下: #./cf_workload_functions.sh function timestamp(){ # get current timestamp sec=`date +%s` nanosec ...

  8. 用python实现在手机查看小姐姐的电脑在作什么!

    看上心意的小姐姐,想看她平时都浏览什么网页,如何才能看她的桌面呢,都说Python很厉害,这次我们做一个利用移动端访问电脑来查看电脑的界面的神器!不知道大家以前有没有做过这方面的东西呢?也许大家听起来 ...

  9. xaml与CSS中的Margin顺序不同

    XAML中  Margin:左 上 右 下 CSS中      Margin:上 右 下 左

  10. JAVA实现--基础算法FOR选择排序

    首先 实现简单的选择排序. 简单排序的思路很简单,就是通过遍历(数组的length次)的数组,每次遍历找出最小的放到数组的第一个位置,下次遍历时就不用考虑第0位置的数从第1的位置开始找1到length ...