SpringBoot 利用thymeleaf自定义错误页面
作者:憧憬 时间:2023-11-29 08:29:55
导入thymeleaf
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
自定义异常类
建立监听异常类
MyException.class
package com.example.demo.domain;
public class MyException extends RuntimeException {
private int code;
private String msg;
public MyException(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
CustomExtHandle 监测异常
package com.example.demo.domain;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
@RestControllerAdvice
public class CustomExtHandle {
// 捕获全局异常
@ExceptionHandler(value = Exception.class)
Object handleException(Exception e, HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
map.put("code", 100);
map.put("msg", e.getMessage());
map.put("url", request.getRequestURL());
return map;
}
// 如果是Myexception类
@ExceptionHandler(value = MyException.class)
Object handleMyException(MyException e, HttpServletRequest request) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error.html"); // 指定错误跳转页面 需要在templates里面新建 一个error.html
modelAndView.addObject("msg", e.getMsg());
modelAndView.addObject("code", e.getCode());
modelAndView.addObject("url", request.getRequestURL());
return modelAndView;
// 当然这里也可以返回json数据 前后台分离的话直接返回一个json即可
}
}
template/error.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>出异常了</h1>
<span>错误信息:</span><h1 th:text="${msg}"></h1> // 获取变量
<span>错误状态码:</span><h1 th:text="$[code]"></h1>
<span>失败API地址:</span><h1 th:text="${url}"></h1>
</body>
</html>
使用
@RequestMapping("/user_info")
public Map<String, String> testMap() {
throw new MyException(500, "手动抛出");
}
效果
来源:https://aoppp.com/springboot-thymeleaf-zi-ding-yi-cuo-wu-y/
标签:SpringBoot,自定义,错误页面,thymeleaf
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
springboot返回前端中文乱码的解决
2023-08-09 11:49:12
Java动态脚本Groovy
2023-12-05 03:25:50
![](https://img.aspxhome.com/file/2023/6/132016_0s.png)
android实现文本复制到剪切板功能(ClipboardManager)
2023-11-28 17:40:31
Java中的functor实现
2023-11-26 08:30:50
C#多线程学习之Thread、ThreadPool、Task、Parallel四者区别
2023-08-27 05:32:14
![](https://img.aspxhome.com/file/2023/2/108772_0s.png)
Windows 10上JDK环境安装配置图文教程
2023-05-31 19:38:03
![](https://img.aspxhome.com/file/2023/7/86737_0s.png)
Java乱码问题解决方法_动力节点Java学院整理
2021-07-25 01:04:52
js事件模型与自定义事件实例解析
2021-05-26 06:15:06
详细图解Java中字符串的初始化
2023-11-20 19:34:24
![](https://img.aspxhome.com/file/2023/0/78010_0s.png)
Android自定义view实现仿抖音点赞效果
2021-11-04 11:58:19
![](https://img.aspxhome.com/file/2023/9/138949_0s.gif)
Java8中Optional操作的实际应用
2022-04-30 22:52:31
![](https://img.aspxhome.com/file/2023/7/129217_0s.png)
Java设计模式之java备忘录模式详解
2023-08-22 19:31:07
![](https://img.aspxhome.com/file/2023/4/58434_0s.png)
Android 如何获取设备唯一标识
2022-09-03 10:47:48
Android检查手机网络状态及网络类型的方法
2023-12-03 19:35:49
浅谈SpringBoot资源初始化加载的几种方式
2022-03-09 08:14:34
![](https://img.aspxhome.com/file/2023/3/80253_0s.jpg)
如何使用JCTools实现Java并发程序
2023-11-21 07:37:39
Kotlin 创建接口或者抽象类的匿名对象实例
2022-02-02 13:12:23
SpringBoot2零基础到精通之数据与页面响应
2022-08-25 22:26:41
![](https://img.aspxhome.com/file/2023/5/110925_0s.jpg)
Springmvc模式上传和下载与enctype对比
2022-11-08 09:14:17
Java压缩文件ZIP实例代码
2022-03-25 04:08:27