spring boot中自定义错误提示页面

当程序出错的时候,比如500错误,当用户输入的url错误时会找不到网页。

在这种情况下如果用默认的错误页面非常不友好。

一般我们都需要定制一些错误的页面。

在普通的web项目中很简单,直接配置web.xml就可以了。

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/view/404.jsp</location>
</error-page>
<error-page>
    <error-code>400</error-code>
    <location>/WEB-INF/view/400.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/view/500.jsp</location>
</error-page>

今天我介绍的是在spring boot中如何使用自己的错误页面。

因为boot中是没有web.xml这个文件的,所以我们需要使用java config的方式来实现。

当发生异常时转发到不同的页面

@Configuration
public class ErrorConfiguration {

    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {    
        return new EmbeddedServletContainerCustomizer(){        
             @Override        
             public void customize(ConfigurableEmbeddedServletContainer container) {            
                container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));            
                container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500"));            
                container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404"));        
            }    
        };
    }

}

定义页面

/**
 * 自定义错误页面覆盖spring boot中的错误页面
 * @author yinjihuan
 *
 */
@Controller
public class ErrorController {

    @GetMapping("/400")
    public String badRequest() {
        return "error/400";
    }

    @GetMapping("/404")
    public String notFound() {
        return "error/404";
    }

    @GetMapping("/500")
    public String serverError() {
        return "error/500";
    }
}

页面内容可以自己写

<body>
    <section id="error" class="container text-center" style="height:800px;">
        <h1>404, 页面没有找到</h1>
        <p>您正在寻找的页面不存在或发生其他错误。</p>
        <a class="btn btn-primary" href="http://pan.cxytiandi.com">回到网站首页</a> 
    </section>
</body>

当你输入的页面找不到时就会出现一个你自己定制的页面 下面是效果图

原文发布于微信公众号 - 猿天地(cxytiandi)

原文发表时间:2017-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

Spring_总结_04_高级配置(一)之Profile

我们在开发软件时,通常会进行跨环境部署。而在跨环境部署时,经常会遇到某些环境的配置并不适用于另一环境,导致应用无法正常运行。

834
来自专栏电光石火

SpringBoot自定义错误页面

Spring Boot以一种新的微服务的方式来替代以Spring Framework构建项目的传统方式,我已经计划在后续的项目开发中使用它。它已经帮我们做了...

3637
来自专栏JavaEE

ElasticSearch的安装以及与springboot的集成

elasticseach简称es,现在用得非常广泛,像百度等一些知名互联网公司都有用到es。那么es到底是什么呢?如何使用呢?下面就一起来学习一下。

2K2
来自专栏潇涧技术专栏

Publish Gradle Android Library to jCenter Repository

本文主要介绍如何通过Gradle将Android库项目上传到jCenter仓库中。

913
来自专栏刘君君

Zookeeper、kafka部署

4168
来自专栏云计算教程系列

如何在CentOS 7上安装和加固Memcached

像Memcached这样的内存对象缓存系统可以通过在内存中临时存储信息,保留频繁或最近请求的记录来优化后端数据库性能。通过这种方式,它们可以减少对数据库的直接请...

1443
来自专栏向治洪

使用Jenkins搭建Android自动打包环境

概述 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。 对于我们...

43110
来自专栏大神带我来搬砖

防止DHCP获取的DNS修改/etc/resolv.conf文件

想在centos系统中使用DHCP分配IP,但是使用自定义的DNS服务器,这时重启时会将DHCP获得的DNS服务器写到/etc/resolv.conf文件中,优...

3595
来自专栏闵开慧

Unable to instantiate org.apache.hadoop.hive.metas

hive启动后运行命令时出现: FAILED: Error in metadata: java.lang.RuntimeException: Unable to...

36915
来自专栏马洪彪

Java ORM Hibernate 入门笔记

一、下载 官网地址:http://hibernate.org/ Hibernate下有ORM(关系型数据库)、OGM(NoSQL数据库)、Search(对象全文...

3877

扫码关注云+社区

领取腾讯云代金券