`

Spring boot 自定义错误页面

阅读更多

我已经是Spring Framework框架的忠实粉丝。对于企业软件开发者来说它提供了对常见问题的通用解决方案,包括那些你在未来开发中没有意识到的问题。但是,它构建的J2EE项目变得比较臃肿,需要被一种新的解决方案替代。

我最大的抱怨就是最开始使用Spring Framework构建项目十分缓慢和复杂,比如构建一个包含JPA的MVC应用。为改变这种情况,Spring Boot应运而生了。

Spring Boot以一种新的微服务的方式来替代以Spring Framework构建项目的传统方式,我已经计划在后续的项目开发中使用它。它已经帮我们做了90%的工作,剩下10%的工作需要我们自己去完成。对于我来说,自定义错误页面就是其中之一。比如404错误,如果不处理的话,会出现“This application has no explicit mapping for /error, so you are seeing this as a fallback.”的错误信息,如图所示:

输入图片说明

Spring Boot默认使用嵌入式Tomcat,默认没有页面来处理404等常见错误。因此,为了给用户最佳的使用体验,404等常见错误需要我们自定义页面来处理。

我们需要用org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer类来实现该功能,在Spring Boot的启动类(main方法所在类)当中,添加如下代码:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){

   return (container -> {
        ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
        ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
        ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

        container.addErrorPages(error401Page, error404Page, error500Page);
   });
}

这是使用Java 8的lambda表达式来简化实现的方式,在代码中创建了三个ErrorPage实例来处理三个通用的HTTP错误状态码,并将他们添加到container当中。ErrorPage类是一个封装了错误信息的类,它可以在Jetty和Tomcat环境下使用。

这是使用Java 7内部类的一个等价实现方式:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){

    return new EmbeddedServletContainerCustomizer() {
        @Override
        publicvoidcustomize(ConfigurableEmbeddedServletContainer container){

            ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.html");
            ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

            container.addErrorPages(error401Page, error404Page, error500Page);
        }
    };
}

错误页面需要放在Spring Boot web应用的static内容目录下,它的默认位置是:src/main/resources/static,如下图所示:

输入图片说明

点击链接下载图中的三个文件的压缩文件,这些文件使用 HTML5 Boilerplate制作。

现在,就可以看到一个简易版本的错误页面,可以根据自己的需要对它进行一些美化。

 

另外如果想用全局的异常捕获,可以使用 @ControllerAdvice    @ExceptionHandler

 

 

转自:https://my.oschina.net/dabird/blog/593643

分享到:
评论

相关推荐

    Spring Boot自定义错误页面

    总结来说,Spring Boot自定义错误页面是一项提升用户体验的重要功能。通过提供个性化的404、500和401页面,我们可以使用户在遇到问题时获得更好的反馈,同时保持应用的专业形象。资源中的404.html、500.html和401....

    Spring Boot 2.X 实战教程.pdf

    本课程内容包括Spring简介、Spring Boot简介、安装JDK、安装Maven、第...自定义欢迎页面、Icon、错误页面)、安装MySQL数据库和客户端、配置数据源、Spring Data JPA代码、Spring Data JPA增删改查实例、安装Redis和...

    SpringBoot自定义错误页面,SpringBoot 404、500错误提示页面

    本文将详细介绍如何在Spring Boot中自定义错误页面,以及处理404和500这两种常见错误。 首先,让我们了解Spring Boot默认的错误处理机制。Spring Boot通过`ErrorController`接口和`ErrorAttributes`类来处理错误...

    spring boot自定义404错误信息的方法示例

    Spring Boot 框架提供了非常灵活的错误处理机制,允许开发者自定义错误页面和错误信息。在本文中,我们将详细介绍如何在 Spring Boot 项目中自定义 404 错误信息。 一、为什么需要自定义错误信息? 在 Web 应用...

    Spring Boot教程.pdf

    错误处理机制是 Spring Boot 中的一个重要组件,通过错误处理机制,我们可以对应用程序的错误信息进行捕获和处理。 Spring Boot 提供了多种错误处理机制,如 try-catch 语句、错误处理器等。 在错误处理机制中,...

    springboot、dubbo学习资料(推荐)

    总结起来,本套学习资料涵盖了Spring Boot自定义错误页面的实践,以及如何在Spring Boot项目中集成和使用Dubbo进行服务治理。同时,结合Egg.js和Vue.js的项目实例,提供了完整的前后端开发经验。通过深入学习这些...

    spring boot管理系统后台

    - Spring Boot提供了统一的异常处理机制,可以自定义错误页面和返回格式。 - 日志框架如Logback或Log4j用于记录系统运行情况,便于调试和监控。 **8. 测试支持** - Spring Boot包含JUnit和Mockito等测试工具的支持...

    Spring Boot核心技术-笔记_springboot_

    开发者工具提供了一些便利功能,如应用热重载、实时代码更改、错误页面等,极大地提高了开发效率。 7. **数据访问** Spring Boot对JPA和MyBatis等持久层框架有很好的支持,可以轻松地与MySQL、PostgreSQL等数据库...

    spring-boot源码

    8. **Web MVC**:Spring Boot对Spring MVC进行了预配置,包括静态资源处理、错误页面配置、视图解析等。`WebMvcConfigurer`接口提供自定义MVC行为的机会。 9. **Data访问**:Spring Boot支持JPA、Hibernate、...

    spring boot实战.pdf高清无水印

    3.3 定制应用程序错误页面 62 3.4 小结 64 第4章 测试 66 4.1 集成测试自动配置 66 4.2 测试Web应用程序 68 4.2.1 模拟Spring MVC 69 4.2.2 测试Web安全 72 4.3 测试运行中的应用程序 74 4.3.1 用...

    Spring Boot安全管理

    - 自定义登录页面:可以创建自己的登录页面并配置Spring Security来处理表单提交。 - 国际化支持:Spring Security支持多语言错误消息,可以根据需要进行配置。 - 安全审计:记录和分析安全事件,以便追踪潜在的...

    自定义错误页面111111111

    自定义错误页面111111111

    spring boot搭建(三)

    此外,Spring Boot还支持自定义错误页面,可以在`error`目录下创建HTML文件来定制错误信息的展示。 六、其他关键特性 1. 自动配置:Spring Boot通过`spring-boot-actuator`模块提供了各种端点,如健康检查、应用...

    Spring Boot实战 ,丁雪丰 (译者) 中文版

    3.3 定制应用程序错误页面 62 3.4 小结 64 第4章 测试 66 4.1 集成测试自动配置 66 4.2 测试Web应用程序 68 4.2.1 模拟Spring MVC 69 4.2.2 测试Web安全 72 4.3 测试运行中的应用程序 74 ...

    Spring Boot 学习笔记完整教程.docx

    - **Spring Boot 配置**:学习如何自定义配置,包括日志级别、服务器端口、缓存管理等。 11. **静态资源处理** - **静态资源路径**:配置静态资源目录,如 CSS、JavaScript 和图片文件,理解 `static` 目录的默认...

    spring boot security 项目

    5. **Error Pages**:Spring Boot Security还会自动配置错误页面,例如未授权(401)和禁止(403)的页面。 6. **Passwords**:Spring Boot Security也提供了一套工具来处理密码,包括哈希和盐值的生成,以及密码的...

    springboot+vue33333333.pdf

    对于整合Web开发,文档详细讲解了如何在Spring Boot中处理JSON数据,配置静态资源访问,实现文件上传功能,使用@ControllerAdvice进行全局异常处理,自定义错误页,配置CORS支持以及注册拦截器等。这些功能是Web应用...

    spring boot 异常处理方案

    6. **自定义错误页面**:Spring Boot默认提供了一个简单的错误页面,但我们可以根据需要提供自己的错误视图。这可以通过配置`error`路径下的视图或者在`src/main/resources/error`目录下创建模板文件实现。 7. **...

    web,spring boot 集成帆软,finereport

    在本文中,我们将深入探讨如何将Web应用与Spring Boot框架集成帆软报表工具Finereport。Spring Boot以其简洁、高效和自动配置的特性,成为Java领域开发微服务和Web应用的首选框架。而Finereport作为一款强大的报表...

Global site tag (gtag.js) - Google Analytics