springboot - 映射HTTP Response Status Codes 到 FreeMarker Error页面
1、总览
2、代码
1)、pom.xml
这里注意:springboot 2.2.0以后默认的freemarker文件后缀为:ftlh。本例用的是2.2.1,所以后缀为ftlh
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-freemarker</artifactId>
- </dependency>
- </dependencies>
2)、application.properties
- #必须关闭whitelabel,否则无法导航到错误ftlh页面上
- server.error.whitelabel.enabled=false
- server.error.include-stacktrace=always
3)、java代码,与https://www.cnblogs.com/yaoyuan2/p/11873110.html一致
4)、5xx.ftlh
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <style>
- table td{
- vertical-align:top;
- border:solid 1px #888;
- padding:10px;
- }
- </style>
- </head>
- <body>
- <h1>My FreeMarker 5xx Error Page</h1>
- <table>
- <tr>
- <td>Date</td>
- <td>${timestamp?datetime}</td>
- </tr>
- <tr>
- <td>Error</td>
- <td>${error}</td>
- </tr>
- <tr>
- <td>Status</td>
- <td>${status}</td>
- </tr>
- <tr>
- <td>Message</td>
- <td>${message}</td>
- </tr>
- <tr>
- <td>Exception</td>
- <td>${exception!""}</td>
- </tr>
- <tr>
- <td>Trace</td>
- <td>
- <pre>${trace}</pre>
- </td>
- </tr>
- </table>
- </body>
- </html>
注意:在freemarker中${exception}是空的,导致出错,进而执行不到前模板页面了。因此,此处加上了!"",表示为空或找不到时为""。
5)、404.ftlh
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <style>
- table td{
- vertical-align:top;
- border:solid 1px #888;
- padding:10px;
- }
- </style>
- </head>
- <body>
- <h1>My FreeMarker 404 Error Page</h1>
- <table>
- <tr>
- <td>Date</td>
- <td>${timestamp?datetime}</td>
- </tr>
- <tr>
- <td>Error</td>
- <td>${error}</td>
- </tr>
- <tr>
- <td>Status</td>
- <td>${status}</td>
- </tr>
- <tr>
- <td>Message</td>
- <td>${message}</td>
- </tr>
- <tr>
- <td>Exception</td>
- <td>${exception!"No exception thrown"}</td>
- </tr>
- <tr>
- <td>Trace</td>
- <td>
- <pre>${trace!"No Stacktrace available"}</pre>
- </td>
- </tr>
- </table>
- </body>
- </html>
6)、error.ftlh
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <style>
- table td{
- vertical-align:top;
- border:solid 1px #888;
- padding:10px;
- }
- </style>
- </head>
- <body>
- <h1>My FreeMarker Custom Global Error Page</h1>
- <table>
- <tr>
- <td>Date</td>
- <td>${timestamp?datetime}</td>
- </tr>
- <tr>
- <td>Error</td>
- <td>${error}</td>
- </tr>
- <tr>
- <td>Status</td>
- <td>${status}</td>
- </tr>
- <tr>
- <td>Message</td>
- <td>${message}</td>
- </tr>
- <tr>
- <td>Exception</td>
- <td>${exception!"No exception"}</td>
- </tr>
- <tr>
- <td>Trace</td>
- <td>
- <pre>${trace!"No trace"}</pre>
- </td>
- </tr>
- </table>
- </body>
- </html>
3、执行
总结:
1、目录结构为:
templates
|_error.ftlh
|_error
|_5xx.ftlh
|_404.ftlh
2、application.properties中,必须加入:
- server.error.whitelabel.enabled=false
如果想显示trace,也要加入:
- server.error.include-stacktrace=always
springboot - 映射HTTP Response Status Codes 到 FreeMarker Error页面的更多相关文章
- springboot - 映射HTTP Response Status Codes 到 静态 HTML页面
1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...
- springboot - 映射 HTTP Response Status Codes 到自定义 JSP Error 页面
1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...
- HTTP状态码(HTTP Status codes)简介
HTTP可能大家都熟悉,就是超文本传输协议.浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),把我们的请求(HTTP Request)传递给服务器,服务 ...
- HTTP response status
The status code is a 3-digit number: 1xx (Informational): Request received, server is continuing the ...
- 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. ...
- IIS SMTP status codes
Here are the meaning of SMTP status codes. Status Code Description 211 System status, or system help ...
- HTTP常见返回代码(HTTP Status codes)的分类和含义
HTTP错误主要分成三类:用户设备问题.Web服务器问题和连接问题.当客户端向Web服务器发送一个HTTP请求时,服务器都会返回一个响应代码.而这些响应代码主要分成五类. HTTP状态码中定义了5大类 ...
- returned a response status of 403 OR 409
当我们使用jersy把图片上传到我们的图片服务器中[tomcat],我们可能会有以下的错误: returned a response status of 403 OR 409 403和409我都遇到过 ...
- RobotFramework下的http接口自动化Get Response Status 关键字的使用
Get Response Status 关键字用来获取http请求返回的http状态码. 示例1:访问苏宁易购网站上的http推荐接口,使用Get Response Status 关键字来获取返回的h ...
随机推荐
- 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的项目启 ...
- 在IDEA中如何使用tomcat部署项目
1.首先,你得先建个Java 项目,然后next 2.新建完项目后,然后右击项目,选择“Add Framework Support...” 3.将Web Application 前的框勾选起来,然后点 ...
- 「NOIP2011」观光公交
传送门 Luogu 解题思路 有点麻烦,幸好 \(O(n^2)\) 能过... 贪心地想一想,我们如果要用加速器,肯定是要选择车上人数最多的时段加速. 但是我们就会面临这样的情况: 加速了,带来了增益 ...
- [Struts]Token 使用及原理
Struts Token 使用 1,先在一个Action中,调用saveToken(HttpServletRequest request)方法.然后转向带有表单的JSP页面. 2,在JSP页面提交 ...
- Jquery属性操作、添加类
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ElasticSearch学习,入门篇(一)
概念解析 1.什么是搜索 搜索就是在任何场景下,找寻你想要的信息,这个时候你会输入一段要搜索的关键字,然后期望找到这个关键字相关的有效信息. 2.如果用数据库做搜素会怎么样 select * from ...
- Python测试进阶——(7)动手编写Bash脚本启动Python监控程序并传递PID
如下: #./cf_workload_functions.sh function timestamp(){ # get current timestamp sec=`date +%s` nanosec ...
- 用python实现在手机查看小姐姐的电脑在作什么!
看上心意的小姐姐,想看她平时都浏览什么网页,如何才能看她的桌面呢,都说Python很厉害,这次我们做一个利用移动端访问电脑来查看电脑的界面的神器!不知道大家以前有没有做过这方面的东西呢?也许大家听起来 ...
- xaml与CSS中的Margin顺序不同
XAML中 Margin:左 上 右 下 CSS中 Margin:上 右 下 左
- JAVA实现--基础算法FOR选择排序
首先 实现简单的选择排序. 简单排序的思路很简单,就是通过遍历(数组的length次)的数组,每次遍历找出最小的放到数组的第一个位置,下次遍历时就不用考虑第0位置的数从第1的位置开始找1到length ...