SpringBoot自定义静态资源映射方法

本文欢迎转载,转载请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN


为什么要自定义静态资源映射?

SpringBoot默认将静态资源映射到resources目录下的public、resources、static等目录。
如果是web静态资源例如html、css、js、网站插图等静态资源,是可以放在这些目录下的。

然而,对于用户上传来的文件,放在resources目录下是有问题的。如果程序是以jar包形式运行的话,总不能每次发布打包都要把用户上传的文件也一并打进jar吧?这显然不是一个好方法。

那能不能将一些动态维护的文件,放在服务器磁盘的某个目录下(项目目录之外),并且通过SpringBoot服务进行访问呢?答案是可以的。

如何做?

只需要实现类继承WebMvcConfigurerAdapter并重写方法addResourceHandlers,将磁盘上文件存放的绝对路径映射,就可以通过访问SpringBoot服务来访问文件了。

新建一个WebAppConfig类如下

@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/myTest/**").addResourceLocations("file:D:/test/");
        super.addResourceHandlers(registry);
    }
}

这样就将D盘上的test目录映射到myTest路径下。
现在在D盘test目录下有一个test.jpg图片,那么通过访问http://localhost:8080/myTest/test.jpg就可以访问到该图片了

提高用户体验之自定义错误界面

如果现在我访问http://localhost:8080/myTest/test222.jpg(实际上没有这个文件),那么页面会报Whitelabel Error Page。这对普通用户来说极其不友好。

我们可以通过自定义错误页面,当用户访问错误路径时,则跳到自定义的错误界面给予友好提示,来提高用户的体验。

在WebAppConfig类中,再添加如下方法

@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
   return new EmbeddedServletContainerCustomizer() {
      @Override
      public void customize(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);
      }
   };
}

错误界面所在目录如下
这里写图片描述

这样,在访问错误路径时候,就可以跳转到自定义的友好界面了。
这里写图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值