SpringBoot(三)—— 全局异常处理及静态资源访问

我们在实际工作中碰到最常见的问题,肯定是空指针问题,我们在项目中经常会因为空指针的问题导致项目直接500了,这样对用户体验不是友好,系统层面的错误,用户不应该直接感知到,即使为500的错误,也可以给用户提示一个类似服务器开小差的友好提示等,来保证客户端能够收到友好的提示,这里我们主要就是介绍SpringBoot中的全局异常的处理。


这里我们还以继续以之前的项目为例,我们在Controller层里手动抛出一个空指针异常,如下:
在这里插入图片描述

然后我们访问结果如下:
在这里插入图片描述


这里我们就建立一个专门的异常处理类来统一处理,如下:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = NullPointerException.class)
    @ResponseBody
    public Object nullPointerExceptionHandler(HttpServletRequest request, Exception e){
        return "发现空指针啦...";
    }

}

在这里插入图片描述


当然我们还可以捕获其他我们经常遇到的异常来进行对应的处理,也可以捕获我们自定义的异常,或者最后捕获下我们没有考虑到的异常情况
在这里插入图片描述





就算我们进行了全局的异常捕获,但是如果我们一不小心输错了地址进行访问,结果如下:
在这里插入图片描述


所以我们还需要来处理一下404的情况,这里我们可以来自定义一个404的页面,这里我们碰到404情况我们将其请求转发给了之前的 /hello ,如下
在这里插入图片描述在这里插入图片描述


我们当然也是可以将其直接指定一个html的错误页面等等,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


注意: 上述自定义一个404的错误页面方式是基于SpringBoot2之后的用法,如果我们使用的SpringBoot2之前,那么又该怎么做呢?很简单,用EmbeddedServletContainerCustomizer 替代 WebServerFactoryCustomizer 就可以了,如下:

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return (container -> {
        ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
        container.addErrorPages( error404Page);
    });
}



静态资源访问

静态资源:js, css, html, 图片,音视频等。
静态资源路径:是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取。

其实上述上述我们已经介绍过了,我们在解决碰到404情况是,直接将其定位置 /static/html/index.html 页面,其实在static文件夹下的文件是可以直接进行访问的,
在这里插入图片描述

Spring Boot 中默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:

  • /static
  • /public
  • /resources
  • /META-INF/resources
发布了286 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/105257396