先要了解Spring的异常处理:
http://rensanning.iteye.com/blog/2355214
(1)Spring Boot默认开启异常应答
-浏览器访问(Accept: text/html),返回“Whitelabel Error Page”错误页面
-浏览器以外访问返回JSON串:
{"timestamp":1487060396727,"status":404,"error":"Not Found","message":"No message available","path":"/test"}
(2)自定义错误页面
Thymeleaf: /src/main/resources/templates/error.html
FreeMarker: /src/main/resources/templates/error.ftl
(3)显示tomcat默认错误界面
application.properties
引用
server.error.whitelabel.enabled=false # Enable the default error page displayed in browsers in case of a server error.
(4)自定义404/500页面
@Component
public class Customizer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404"));
container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500"));
}
}
@RequestMapping("/404")
@ResponseStatus(HttpStatus.NOT_FOUND)
public String notFoundError() {
return "error/404";
}
@RequestMapping("/500")
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String interdError() {
return "error/500";
}
引用
src/main/resources/templates/error/404.html
src/main/resources/templates/error/500.html
(5)兼容页面和API
org.springframework.boot.autoconfigure.web.ErrorController
@Controller
public class GlobalErrorController implements ErrorController {
@Value("${server.error.path:${error.path:/error}}")
private String errorPath;
@Autowired
private ErrorAttributes errorAttributes;
@Override
public String getErrorPath() {
return errorPath;
}
@RequestMapping(value = "${server.error.path:${error.path:/error}}")
public String error(HttpServletRequest req) {
if (isAPIreq(req)) {
return "forward:/api/error";
} else {
return "forward:/admin/error";
}
}
@RequestMapping(value = "/api/error")
@ResponseBody
public ErrorResponse error(HttpServletRequest request) {
// ...
return ErrorResponse.build();
}
@RequestMapping("/admin/error")
public String error(HttpServletRequest request, Model model) {
// ...
return "screen/error";
}
}
src/main/resources/templates/screen/error.html
分享到:
相关推荐
NULL 博文链接:https://rensanning.iteye.com/blog/2357171
00、尚硅谷_SpringBoot_源码、课件 01、尚硅谷_SpringBoot_入门-课程简介 02、尚硅谷_SpringBoot_入门-Spring Boot简介 03、尚硅谷_SpringBoot_入门-微服务简介 04、尚硅谷_SpringBoot_入门-环境准备 05、尚硅谷_...
---Day01SpringBoot基础重温篇.mp4 ---Day02SpringBoot核心原理篇.mp4 ---Day03SpringBoot完美收官篇.mp4 优秀作业名单 ---Day01优秀作业名单(排名不分先后).txt ---Day02优秀作业名单(排名不分先后).txt 源码和软件...
内容概要:该资源是Spring全家桶视频课程的第三部分Spring Boot的源码,其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、...
推荐工具:-OpenWrite:Markdown微信编辑器是一种... 二,系列文章目录『Spring Boot 2快速教程』『基础-入门篇』『基础-Web业务开发篇』Spring Boot使用Swagger2构建RESRful API文档Spring Boot集成JSP 弹簧靴集成胸腺
入门/基础 - 在本文中,我们将学习如何使用 Spring MVC 5 +、JSP、Maven 构建工具和 Eclipse IDE 创建一个简单的 Hello World Spring MVC 应用程序 - 在本文中,我们将学习如何使用 Spring MVC 5+、Maven 构建工具、...
Spring Boot入门 Spring Boot配置 Spring Boot与日志 Spring Boot与Web开发 Spring Boot与Docker Spring Boot与数据访问 Spring Boot启动配置原理
主要给大家介绍了关于Spring boot的相关资料,本文属于基础入门教程,对各位学习Spring boot的新手们具有一定的参考学习价值,,要的朋友们下面来一起看看吧。
一、Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用...
Spring启动教程项目简介Spring Boot Tutorial是一个入门级的教程,主要包含Spring Boot的使用,以及如何集成各种第三方组件等内容。比较适合初学Spring Boot的同学们。博客:本系列教程PDF:准备中,尽请期待...目录...
02、尚硅谷_SpringBoot_入门-Spring Boot简介 03、尚硅谷_SpringBoot_入门-微服务简介 04、尚硅谷_SpringBoot_入门-环境准备 05、尚硅谷_SpringBoot_入门-springboot-helloworld 06、尚硅谷_SpringBoot_入门-...
这个例子展示了如何将Angular和Spring Boot部署到Heroku。 它还显示了如何使用ng deploy将Angular部署到Firebase,Netlify和AWS S3。 请阅读以了解如何创建此应用程序。 这篇博客文章是系列文章的第3部分。 本系列...
包含:socket网络编程及实战,系统学习docker,看的见的算法 7个经典应用诠释算法精髓,一站式学习Redis 从入门到高可用分布式实践,Spring Boot 2.0深度实践之核心技术篇,Scala 学习 进击大数据Spark生态圈,剑指Java面试...
Atomikos曾介绍使用TCC作为微服务的分布式事务解决方案,有一篇简单的译文可作为入门资料。经文章叙述,Atomikos所设计的TCC交互完全整合在HTTP协议之上,并充分地替代了HTTP语义特性,是一个与应用层协议紧接解决...
小编 做的这个项目有部分功能用到了 Activiti工作流,目前对工作流的掌握程度是基本会用,我之前写过一篇 Activiti 入门篇,当前这篇文章是属于Activiti 实战部分,如果你想知道Activiti 工作流是如何使用的话,那就...
这两个基本上是主要问的Java框架: 框架这部分包含很多,入门框架有Spring、Spring MVC、Mybatis,目前SSH很少使用了,微服务生态这边有Spring Boot、Spring Cloud分布式:市面上流行的分布式框架,分布式缓存,消息...