美文网首页编程技术
Spring Boot自定义错误页面

Spring Boot自定义错误页面

作者: itcjj | 来源:发表于2017-06-15 17:47 被阅读5188次

    1.Spring Boot描述

    错误总是会发生的,那些在生产环境里最健壮的应用程序偶尔也会遇到麻烦。虽然减小用户遇到错误的概率很重要,但让应用程序展现一个好的错误页面也同样重要。Spring Boot自动配置的默认错误处理器会查找名为error的视图,如果找不到就用默认的白标错误视图,如下图所示。因此,最简单的方法就是创建一个自定义视图,让解析出的视图名为error。

    image.png

    方法1:实现ErrorController接口

    /**
    * 方法1:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController
    * @author cjj
    *
    */
    @Controller
    @RequestMapping("/error")
    public class BaseErrorPage implements ErrorController {
     
        Logger logger = LoggerFactory.getLogger(BaseErrorPage.class);
     
        @Override
        public String getErrorPath() {
            logger.info("进入自定义错误页面");
            return "error/error";
        }
     
        @RequestMapping
        public String error() {
            return getErrorPath();
        }
    

    方法2:添加自定义的错误页面

    在resources/public/error添加404.html页面
    在templates/error/下定义5xx.ftl
     /**
         * 方法2:添加自定义的错误页面
         * @return
         */
        @RequestMapping("error")
        public String error() {
            throw new RuntimeException("测试异常");
        }
      注:templates/error/ 这个的优先级比较 resources/public/error/高
    
    

    方法3:使用注解@ControllerAdvice

    @ControllerAdvice
    public class BizException {
        private static final Logger logger = LoggerFactory.getLogger(BizException.class);
     
        /**
         * 运行时异常
         * @param exception
         * @return
         */
        @ExceptionHandler({ RuntimeException.class })
        @ResponseStatus(HttpStatus.OK)
        public ModelAndView processException(RuntimeException exception) {
            logger.info("自定义异常处理-RuntimeException");
            ModelAndView m = new ModelAndView();
            m.addObject("exception", exception.getMessage());
            m.setViewName("error/500");
            return m;
     
        }
     
        /**
         * Excepiton异常
         * @param exception
         * @return
         */
        @ExceptionHandler({ Exception.class })
        @ResponseStatus(HttpStatus.OK)
        public ModelAndView processException(Exception exception) {
            logger.info("自定义异常处理-Exception");
            ModelAndView m = new ModelAndView();
            m.addObject("exception", exception.getMessage());
            m.setViewName("error/500");
            return m;
     
        }
    }
    

    2.项目结构图

    项目结构.png

    3.显示配置后的效果

    404.png 5xx.png

    相关文章

      网友评论

        本文标题:Spring Boot自定义错误页面

        本文链接:https://www.haomeiwen.com/subject/sxjuqxtx.html