spring boot基础学习之(二)静态资源存放的位置?为什么该存放在这?从spring boot底层代码进行剖析(webjars)

news/2024/7/11 1:08:48 标签: spring boot, java, spring, jquery, 后端


执着有时是一种错误,放弃有时也是一种美丽。


在架构有很多位置可以放置静态资源可以被访问到,位置不同使它们被访问的优先级顺序也有不同,接下来我们将通过spring boot>spring boot配置的底层代码进行剖析。

第一个类:WebMvcAutoConfiguration

这个类实现实现的功能有很多,这里就不统一一一进行介绍,只讲解我们需要了解的配置

 静态资源配置类

 路径一:用户自己设置(在配置文件设置访问静态资源)

 如果在配置文件进行了新的配置,那么他就会执行上面的if语句:代码的内容的大体意思就是判断是否能够检测到配置文件中的新的路径配置,如果检测到了,那么就会输出Default resource handling disabled 语句,返回值是一个空值,系统默认就会从新配置路径下进行静态资源的访问。

配置用户访问的路径,创建一个新的文件夹,作为静态资源存放数据的目录,并创建一个js文件看看前端用户能不能访问的到

静态资源目录

在application.yaml配置文件进行静态资源目录进行配置

 几行代码则就表明,web静态的资源目录设为classpath路径下的templates,接下来就是访问目录下创建的demo1.html

网页查看该资源,成功输出,表明静态资源目录设置成功。

在没有上面的配置时,访问一个普通文件看能不不能被访问?

在static目录下创建一个网页文件

去网页访问该文档,看看能不能被访问到? 

 文件正常输出,这是在没有进行上面application.yaml配置文件进行配置时,能够被访问,那如果进行静态资源目录的配置后,该文件还能被访问到吗?答案是否定的

 那该目录下的文件能够被访问,那么其他路径下的资源还能被访问到吗?答案是否定的

那么为什么就加了一个配置文件的路径就不能访问了呢?

因为在默认路径它是/**这样的,如果前端用户要去访问,它就会从/目录下开始向下进行寻找,而静态资源原本就在/目录的下面,那么该静态资源自然而然就能够被访问到,但是当我们修改静态目录为其他的文件,那如果用户想要访问的静态资源不在我们设置的静态目录下,那么用户想要访问的静态资源就会查询不到,就会出现上面的页面。

那么默认的静态资源搜索是在哪里呢?

打开类二:WebMvcProperties.java

假设这个类是一个实体类,那么类中的内容都是属性,就是在配置文件application.yaml中进行属性值的注入,默认设置的路径是在/的下面,当然我们也可以进行属性值的注入,去修改用户访问静态资源路径。在配置文件中进行配置。

除了默认的路径还有spring boot>spring boot项目中默认的几个路径,只要是存在这几个路径下的文档就一定能被用户访问到。

路径在WebProperties.java中配置文件中有设置

 就是上面那四个路径,只要在这几个目录下的静态资源都能被访问到,但是有一点要注意到,那就是当几个目录下存在名字和类型都相同的文件时,不通过目录下的资源优先级顺序不同

看看不同路径的静态资源能不能被前端用户访问到?在上面的四个路径下,创建不同的网页文件,看是否能被访问到?

创建资源文件

 访问结果:

 四个文件都能够被输出,表明四个目录是spring boot>spring boot能够识别的路径

接下来就是如果四个文件夹下出现相同的静态资源那谁先会被访问呢?

 优先级NO.1

 优先级NO.2

 

优先级NO.3 

 优先级NO.4

 优先级顺序为:

META-INF/resources 》resources》static》public

其实呢,访问路径不光只有这几个?还有一个那就是webjars

Webjars本质就是以jar包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可。

使用SpringBoot需要使用Webjars,我们可以去搜索一下:网站:https://www.webjars.org

首先导入依赖:以jquery为例

        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.6.4</version>
        </dependency>

 

 依赖被成功导入,接下来我们要尝试尝试看看能不能访问到webjars中的静态文件,就以jquert.js为例,看看能不能被访问到?

 成功被访问,说明这也是一个能够被访问的静态资源目录


http://www.niftyadmin.cn/n/175133.html

相关文章

(二)豆芽八股文之c++

c 1.1 c与c的区别 1、c是c语言的超集&#xff0c;c可以兼容c打不死c也有很多新特性&#xff1a;引用、智能指针、auto 2、c是面向对象的编程&#xff0c;有类&#xff0c;为此引出了三大特性 封装、继承、多态 3、c语言有一些不安全的语言特性&#xff0c;如指针使…

【推理题】扑克牌

目录标题猜牌问题&#xff1a;甲乙知道桌子的抽屉里有16张扑克牌&#xff1a;54张扑克牌,两人轮流拿牌,每人每次只能拿1~4张,谁拿到最后一张谁赢.先拿牌的人怎么才赢?猜牌问题&#xff1a;甲乙知道桌子的抽屉里有16张扑克牌&#xff1a; 红桃A、Q、4 黑桃J、8、4、2、7、3 草…

Scala中Array常用的方法(1)

在scala中&#xff0c;Array有大量的方法。定义一个数组arr后&#xff0c;输入arr.后按下tab&#xff0c;可以得到大量的方法。 合并集合&#xff0c;并返回一个新的数组&#xff0c;新数组包含左右两个集合对象的内容。 var a Array(2,1) var b Array(3,4) var c a b va…

macbook苹果电脑系统使用“终端”远程登录linux主机

登录mac系统后&#xff0c;依次打开顶部菜单&#xff0c;“前往” -> “应用程序” -> “实用工具” -> “终端”&#xff0c;如下图&#xff1a; 在打开的终端页面&#xff0c;输入如下代码&#xff1a; ssh root服务器IP地址 注&#xff1a;上边代码为固定格式&am…

二十二、任务通知详解

文章目录1、基本概念&#xff08;核心是关中断&#xff09;2、使用场景&#xff1a;一个任务唤醒另一个任务&#xff08;即任务间的数据传输&#xff09;3、休眠唤醒功能与前面说到的内核对象的区别4、优势及限制5、通知的三种状态6、任务通知的两套函数&#xff08;最好还是使…

Java多线程之ExecutorCompletionService

文章目录1 ExecutorCompletionService1.1 简介1.2 原理1.3 Demo示例1.3.1 未使用ExecutorCompletionService1.3.2 使用ExecutorCompletionService1.4 深入分析说明1.4.1 所有方法1.4.2 构造方法1.4.3 获取方法1.4.4 提交方法1 ExecutorCompletionService 1.1 简介 当我们向Ex…

二十六、对象的实例化内存布局与访问定位

一、对象的实例化 1.判断对象对用的类是否加载、链接、初始化。 2.为对象分配内存。 3.处理并发安全问题。 4.初始化分配到的空间。 5.设置对象的对象头。 6.执行init方法进行初始化。 1.虚拟机遇到一条new指令&#xff0c;首先去检查这个指令的参数能否在Metaspace的常量池中…

最少砝码(思维+找规律)

最少砝码 前n个可以表示0~k; 第n1个为x&#xff08;x>k&#xff09;; 最大可测maxnkx; 第n1个和前n个放两边 可测得x-k&#xff1b; 让x-kk1&#xff0c;得到x2k1&#xff1b; maxn3k1&#xff1b; k1 可以用(2k1) - (k-0) 表示 k2 可以用(2k1) - (k-1) 表示 … 2k1 可以用…