当前位置: 首页 > news >正文

SpringBoot异常处理机制之自定义404、500错误提示页面

目录

  • `SpringBoot` 自定义 `404、500` 错误页面
    • `SpringBoot` 默认的异常处理机制
    • 使用模板引擎
      • 使用示例
        • 创建 `SpringBoot` 项目如下
        • `application.properties` 项目配置文件
        • `404` 页面内容如下
        • `500` 页面内容如下
        • `Controller` 如下
        • `404.html` 页面测试
        • `500.html` 页面测试
    • 没有使用模板引擎

SpringBoot 自定义 404、500 错误页面

SpringBoot 默认的异常处理机制

SpringBoot 默认已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向 /errorurl 发送请求。在 SpringBoot 中提供了一个名为 BasicErrorController 的类来处理 /error 请求,然后跳转到默认显示异常的页面来展示异常信息

使用模板引擎

在使用 thymeleaf 等模板引擎时,SpringBoot 会自动到 src/main/resources/templates/error/,文件夹下寻找 404.html、500.html 的错误提示页面

错误提示页面的命名规则就是:错误码.html,如 404404.html500500.html

使用示例

创建 SpringBoot 项目如下

404、500 错误提示页面结构如下

在这里插入图片描述

application.properties 项目配置文件

server.port=8080

#它的默认值就是classpath:/templates/,源码在ThymeleafProperties类中
spring.mvc.view.prefix=classpath:/templates/
#它的默认值就是.html,源码在ThymeleafProperties类中
spring.mvc.view.suffix=.html
spring.thymeleaf.cache=false

404 页面内容如下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>404</title>
    <link rel="shortcut icon" type="image/x-icon" th:href="@{/img/favicon.ico}"/>
    <link rel="stylesheet" type="text/css" th:href="@{/css/404.css}"/>
</head>
<body>
	<div id="banner" style="height: 600px;width: 600px;margin-left: 370px"></div>
</body>
</html>

500 页面内容如下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>500</title>
    <link rel="shortcut icon" type="image/x-icon" th:href="@{/img/favicon.ico}"/>
    <link rel="stylesheet" type="text/css" th:href="@{/css/500.css}"/>
</head>
<body>
    <div id="banner" style="height: 600px;width: 600px;margin-left: 370px"></div>
</body>
</html>

Controller 如下

@Controller
public class PageController {

    // 跳转到登录页
    @GetMapping(path = "/toLogin")
    public String toLogin() {
        int code = 1/0;
        return "login";
    }
}

404.html 页面测试

访问不存在的接口:http://localhost:8080/aaaa,结果如下

在这里插入图片描述

500.html 页面测试

访问已存在的接口:http://localhost:8080/toLogin,结果如下

在这里插入图片描述

没有使用模板引擎

如果没有使用 thymeleaf 等模板引擎时,SpringBoot 会到静态资源文件夹寻找 404.htm、500.html的错误提示页面,命名同上。SpringBoot 中默认的静态资源路径有 4 个,分别是

  • classpath:/METAINF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/

优先级顺序为:META-INF/resources > resources > static > public,以上 4 种路径创建 error 文件夹,再创建 404、500 错误提示页面如下

在这里插入图片描述
不用写额外的映射器,就能直接请求到

相关文章:

  • Debezium系列之:深入理解Debezium是如何处理bigint unsigned类型的字段
  • MySQL基础篇【第四篇】| 连接查询、子查询(嵌套)
  • 【Linux】如何实现虚拟机系统与本地系统的通信连接
  • MyBatis 操作数据库
  • Linux权限
  • 【深度学习】6-卷积过程中数据的结构变化
  • 牛客刷SQL
  • 如何高效的实现大型设备中卫星信号的传输和分配?
  • C语言描述数据结构 —— 二叉树(3)普通二叉树
  • Nginx rewrite
  • 【基于Arduino的垃圾分类装置开发教程一】
  • Synchronized 与 Lock 卖票问题、区别
  • 多疑型性格的危害,如何改变多疑型性格?
  • javaweb教师人事管理系统的设计
  • 【Swift 60秒】01 - Variables - 变量
  • 【Linux系统编程】快速查找errno错误码信息
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ECMAScript入门(七)--Module语法
  • javascript数组去重/查找/插入/删除
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PHP 的 SAPI 是个什么东西
  • python 装饰器(一)
  • sessionStorage和localStorage
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 初识MongoDB分片
  • 大数据与云计算学习:数据分析(二)
  • 记一次删除Git记录中的大文件的过程
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 开源地图数据可视化库——mapnik
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • const的用法,特别是用在函数前面与后面的区别
  • # 计算机视觉入门
  • #include<初见C语言之指针(5)>
  • #NOIP 2014# day.2 T2 寻找道路
  • #前后端分离# 头条发布系统
  • (03)光刻——半导体电路的绘制
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (六)c52学习之旅-独立按键
  • (三) diretfbrc详解
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)详解PHP处理密码的几种方式
  • (转)重识new
  • (转载)Google Chrome调试JS
  • .gitignore文件设置了忽略但不生效
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET建议使用的大小写命名原则
  • .net中的Queue和Stack
  • .php文件都打不开,打不开php文件怎么办
  • .sh 的运行
  • /run/containerd/containerd.sock connect: connection refused
  • @RequestMapping 的作用是什么?