前后端整合vue+springBoot+gateway。解决vue打包之后放到springBoot的static文件夹无法访问,gateway转发静态资源文件的失败的问题

这是不是你的问题?

在这里插入图片描述

不用担心马上就能解决

SpringBoot访问静态资源文件

springBoot中整合springMvc 默认 src/main/resources/static 为静态资源文件夹

如下方结构:我们想访问a.txt文件,假设启动端口为8080,那么访问路径就是 http://localhost:8080/a.txt。

如果是vue打包文件,因为打包生成的是index.html,我们知道index文件是可以省略不写的,那么他的访问路径就是 http://localhost:8080

如果访问失败请关闭idea重新启动(idea老神经了,唉!)

如果vue你使用的是history模式,会发现刷新之后又错了,hash模式没有影响。那怎么办呢?等会再说我们先看springCloud+gateway如何访问静态文件

在这里插入图片描述

SpringCloud+Gateway访问静态资源

那么我们如果使用的springCloud+gateway网关怎么办呢,它会自动转发吗?当然不会,它那么多模块它怎么会知道访问哪个的static,这个时候我们就需要使用gateway的断言指定一个模块的static是作为静态文件夹。

  • 这里我们有两个模块:userserver ,orderserver
    其中 /user/ 前缀的请求转发给了userserver,/order/前缀的请求转发给了orderserver
  • 值得注意的是,在orderserver模块中我还设置了一个 /**的断言,通过这个我们就可以指定orderserver的static文件夹为静态资源文件夹
  • 假设gateway模块的端口为8082那么当我们请求oderserver模块static下的a.txt时只需要访问http:localhost:8082/a.txt即可。同样,如果文件为index.*可以省略不写。
    如果访问失败,重启idea(再次吐槽)

在这里插入图片描述

解决vue打包访问时刷新出现错误页面的问题

好了无论是SpringBoot 还是SpringCloud+Gateway我们都能访问到文件了,那么我们来解决vue History模式刷新就出现错误页面的问题

我们只需要作为静态资源文件的模块,注意一定要是这个模块。在这个文件中注入一个配置几个

方法一: 在启动类中配置
在这里插入图片描述

	@Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> myWebServerFactoryCustomizer(){
        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
            @Override
            public void customize(ConfigurableWebServerFactory factory) {
                ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
                factory.addErrorPages(error404Page);
            }
        };
    }

我们并不提倡第一种写法,我们要时刻记得java的封装特性

方法二:创建一个配置类 VueHistoryConfig
在这里插入图片描述

@Configuration
class VueHistoryConfig {
    @Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> myWebServerFactoryCustomizer(){
        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
            @Override
            public void customize(ConfigurableWebServerFactory factory) {
                ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
                factory.addErrorPages(error404Page);
            }
        };
    }
}

好了,结束。我测试的没有问题,如果出错请认真检查🥰🥰🥰

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值