美文网首页
spring boot如何处理静态资源

spring boot如何处理静态资源

作者: 张培_ | 来源:发表于2017-11-06 21:08 被阅读79次

    情景描述

    • 前端使用create-react-app打包好了所有的静态资源。
    • 希望使用后端服务器直接加载静态资源
    • 但是不知道spring boot是将静态资源存放在哪里,并且如何配置

    矛盾点

    • 想要使用类比于express中的express.static中间件的思想直接使用在spring boot项目中。发现问题:
      • 1.app.use(express.static('dirPath')):其中我只需要给定一个path就可以简单的将静态资源的提取位置放在dirPath中即可。我只需要将静态资源存放在我定下的根路径即可。但是spring boot似乎将所有的配置都提前准备好了。因此想要我只需要找到他要求我存放的位置就行。但是需要存放在哪里?
      • 2.对于nodejs url只需要http://localhost:port/dirpath皆可以访问,那么spring boot也是这样吗?

    spring boot要求我们将静态资源存放在哪里呢?

    • spring boot为我们提供了四个可以存放静态资源的目录,并且他们有优先级,当一个同名的请求过来。会根据优先级依次遍历不同的静态资源目录。
    • 四个静态资源目录的位置都是一样的,均在classpath下;而classpath就是root/src/main/resources
      • rootPath/src/main/resources/resources/**
      • rootPath/src/main/resources/static/**
      • rootPath/src/main/resources/public/**
        优先级由高到底

    那么这些静态的资源的访问方式有什么要求吗?

    • 静态资源的请求方式其实可以完全理解成根据路径请求文件一样
    • 比如我想要rootPath/src/main/resources/resources/index.html的文件,在本地我可以通过路径直接访问到,但是通过请求的方式:http://localhost:port/index.html即可获取
    • 静态目录的路径可以被当做http://localhost:port
    • 还有一个知识点需要get:所有静态目录下的index.html可以通过访问http://localhost:port获取,因此第二条的访问url可以被换成:http://localhost:port
      • 但是请注意:唯一不需要文件名就可以访问的文件只有在静态目录下的index.html.
      • 如果静态目录下有一个/home/index.html此时如果通过http://localhost:port/home是不能访问到的

    那么如果我希望能够自定一个存放静态资源的目录我该怎么办?

    • 重写webMvcConfig即可
    • 编写类继承自WebMvcConfigurerAdapter重写其中方法。
    • 接下我有一篇文件直接举例子讲述这种方式

    反思

    • 以前总是有个方法能解决问题即可,现在终于做到问这个问题出现是因为什么,但是却丢掉了,这样解决是为什么,有没有别的办法可以解决这个问题。

    ACTION

    • 以后针对一个问题即使解决了,问题为什么发生。为什么解决了,以及有没有别的解决办法。。。至少三个问题反映在总结中。

    相关文章

      网友评论

          本文标题:spring boot如何处理静态资源

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