00:00
好,那么先来分析一下web开发里边的简单功能,那我来创建上一个项目,我们来单独来测试。我们使用spring引力拉好报名呢是com at,硅谷那们现在是boot,我们这是第五章节零五我们的web开发啊,这是我们web开发的测试的第一个项目。把这一块的报名我们来改一下,这是我们的小名啊,过来。好,我们把这个JDK呢,选成我们的八,下一步好,我们来勾中我们的场景,我们测试web开发,我去勾中web,那另外呢,为了方便起见,我们这个room bank,包括我们第一位tools以及configuration processor,这基本都是标配了,好来下一步点击finish。来等待这个项目来创建完成。嗯。好,我们现在这个项目呢,创业完成,我们把这个没用的东西,我先来删除一下。
01:07
另外呢,我们后来要改一些配置,我经常呢,我们现在以后呃,大多给大家来使用一下这个样面来作为配置测试一下。好好,我们现在来进行测试,我们先来测试它的第一个功能叫静态资源访问,那我们来到spring book官方文档,我们spring l VC静态资源在715章节,首先我们官方文档说boot给我们提供静态资源的这个啊目录,也就是说当你把所有的静态资源,也就是你的图片,视频,GS文件,CSS文件等等,这你只要放在这些目录里边,好,我就把。这一块的内容拿过来。然后呢,我们接下来访问我当前项目的,哎,跟路径,我们就直接能访问静态资源了,原因是因为它使用这个resource http request hunter处理的,那我们先不关注它的原理,我就先来测试一下,首先呢,他说这个静态资源里边,首先第一个静态资源目录,静态资源目录,嗯,这个资源目录目录呢,他说是这几个叫我们static public resource那我就给我们当前项目下建立这些目录,哎,大家先看啊,我们这些目录呢,首先人家说的这几个目录是在类路径下,类路径下,比如你当前项目类路镜像,只要有这些目录,这些目录都能当做静态资源目录,第一个是static static呢是我们创建这个项目模板的时候,人家默认就有的目录好有了,然后呢,第二个目录叫public,我再来创建一个目录,Public。
02:45
走第三个目录是类路径下有一个resources,来大家看啊,我们这个resources文件夹,它本身是类路径的,跟路径在它下边得再有个resources。走,然后呢,再来看一个,还有一个叫Meta info resources,在类路径下必须有一个Meta info,这个类路径下找一个Meta info。
03:10
然后呢,Meta info下边有一个resources,大家复制的时候注意别多复制一个空格啥的。走啊,我这儿没啥空格,好,我来测试给这些目录,下边我来放静态资源,能不能正常访问,我呢就来打开我本机的几个图片,就来复制到里边,比如bug JPG,我们把这个bug JPG呢,我们放到这儿。然后呢,我们再来看一下,还有我们的这个,比如time这个JPG,我们的GIF我来放到这儿。我们来多找上几个图片,比如我们的这个JPG,来放到这儿。然后呢,包括我们的这个支付宝来放到这儿,诶大家看到我现在呢,给他认为的这四个静态资源目录里边,我们都把图片都放进去了,我看能不能访问来启动起我们的这个项目。
04:02
啊,现在到无需任何配置。那么这个项目呢,在这儿他也给我们把慢方法都写好,来启动起来,来等待测试效果。好,我们现在呢,项目启动起来访问测试一下,访问我们当前local host8080,首先呢,我们来访问一个bug,我之记得之前有一个bug JPG,诶没问题,Bug JPG呢是存在于我们这个目录下,所以这个呢是静态资源目录,另外呢,这个。GIF我们来访问一下,走诶也能访问,没问题,包括我们再来看一下我们的这个time JPG,好,我们来再来看一下这个回车,诶也能访问,我们再来访问一个这个支付宝PG。走诶也能访问,也要说呢,这几个目录确实是人家说的这个静态资源目录,所以呢,我们默认只要咱们这个资源放在静态资源,静态资源放在我们这个当前项目类路径下的这几个目录,然后呢,我们接下来访问,访问呢,路径是什么呢?就是当前项目的这个跟路径跟路径,哎,我们跟路径也就是这个杠,然后再加上我们这个静态资源名,然后呢,我们就能访问到了,那我们访问到以后呢,我们再来看我们这个spring boot官方文档,给我们说什么,然后说呢,其实它末认呢是映射的杠双星,也就是说啊,我们这个静态资源,你因为它映射的是杠双星,所以你只需要写资源名,它就会自动能给你找到静态资源。
05:47
如果呢,你想改变我们这个静态资源访问的这个啊个这个根目录,我们以前呢是访问根目录,你也可以给它改变这个属性,这是一个什么场场景呢?来我们来想一下啊,那先来看一下它的静态资源访问原理,那为什么我们能直接访问这个bug JPG,或者它就能访问到我们的这个静态资源,它怎么就知道我是要找静态资源,而不是找请求,其实呢,非常方便,我们先来看一下我们的这个简单原理,来到controlrler里边,比如我先来测一个controller,我来写一个controller controller里里边呢,我来写一个rest controller处理rest请求,那先来写第一个请求public string啊,你就叫hello,然后呢,他来处理一个请求,比如request map,他来处理什么呢?你给我发送一个这个请求,比如正好我们这呢,也有一个动态请求,名叫bug JPG,我们这还有一个静态资源叫bug gpg,但是如果是动态请求呢,给我置返回的是。
06:48
这AA。大家猜,如果我们同时访问跟项目下的bug JPG,它是给我们找动态请求呢,还是给我们找静态资源目录下的静态资源?
07:01
我们不妨来做一个测试,现在呢,我写了一个controltrler controltrler呢也能映射bug gpg,我在这来做一个测试,Bug JPG,哎,我们发现它返回的是AAA,也就是我们controltrler的内容,所以呢,其实它的原理非常方便,原理就是因为我们这个静态资源映射的是杠双型,映映射杠双型,也就是是拦截所有请求的杠双型,而巧了,我们这个动态资源呢,它也肯定得要看所有请求,所以呢,请求一进来,请求进来先去找controlrler,先去找controller,看能不能处理,如果我们这个controltrler能处理就处理,如果不能,然后呢,因为我们这个静态资源映射的是杠双型,所以呢,所有的资源,不能处理的所有请求,不能处理的所有请求,然后呢,又都交给,又都交给咱们这个静态资源处理器。
08:00
静态资源处理器,静态我们这个资源处理器,然后呢,接下来我们接下来就来看静态资源能不能找到,静态资源就会去我们指定的这几个目录,然后按照我们请求的名字去来找,静态资源就去找,如果能静态资源能找到,能找到,然后我们访问,如果静态资源也找不到,也找不到,静态资源呢,都找不到,那就会是啥,就会是404,比如我来访问一个从未存在的图片,其他整个呢,就是如果我访问aaa.GPG,我一回车,它呢,应该是A1.gpg,先去所有的CTRLL里边看能不能处理,不能处理,再来把我们这个请求的这个名字,请求的名字当做我们静态资源的名字,再去静态资源的这个文件夹下找,如果能找到,那就没问题了,比如我们把它再来复制一个,哎,然后呢,我们的这个名字。把这个CTRLC复制到这吧,然后呢,我们把这个名字变成我们要用到AA。
09:02
那他现在呢,肯定就能找到了CRC,然后呢,C。好,那我们重新这个静态资源有变化呢,我CTRLF9来项目重新编译一下,我们来看一下,我现在来访问回车,好,我们现在这个静态资源就OK了,所以呢,它整个的过程其实是这么这样的一个过程,然后接下来第二个我们现在呢,又看到人家spring boot给我们说你呢,这个静态资源默认是我们向更路径加上我们的这个静态资源名就能访问,但是呢,如果你想要给这个静态资源所有加一个前缀也行,这个呢是我们以以后经常用的,比如我们举一个例子,我们写了一个外围应用,因为里边呢有超多静态资源,然后呢,还有我们一些动态请求,但是呢,我们肯定这个应用里边会有相应的一些拦截器要做一些功能,比如我们这个登录拦截器,我们只有登录以后才能访问一些动动态请求,所以我们一般拦截器呢,如果我来拦杠双星,相当于把静态资源都拦住了,所以呢,为了我们拦截器配置方便,我们让所有的静态资源访问都。
10:08
带一个前缀,这样呢,我们让拦截器放行以指定前缀啊的这个路径开始的所有请求,这样我们以后就非常方便,能让我们过滤到静态资源,所以呢,我们一般希望静态资源的访问路径都有一个前缀,所以我们就可以来实现,然后呢,静态资源访问前缀访问的咱们这个前缀,然后呢,我们这个静态资源访问前缀是默认是无前缀的,默认无前缀,那如果我们想要给他一个指定前缀spring boot,我们官方说你只需要配置这个static pass pattern,那我们就来在这儿,在压面里边我们来配一个static pass,好,原来的默认值是杠双星,因为刚才看配的时候提示就是杠双星,然后呢,我现在加一个哎,我们自己的前缀,比如res下边的所有所有请求,这都是静态资源请求,所以以后呢,我们访问静态资源就应该是当前项目加我们这个访问前缀加静态资源名。
11:07
才会,所以呢,我们如果写了这个配置,那给我们最终起到的效果就是我们写了这个配置,那我们以后的访问呢,就是当前项目再来加上我们这个sta take pass前缀,再来加上我们这个静态资源名,然后呢,就等于他会去静态资源文件夹下找。文件夹下照好,那我们现在来访问,我们再来访问这些资源,我们来直接访问AA就不行了,所有的静态资源都得加上访问前缀,好,那么res没问题,专门的访问前缀,另外一点就是人家这个官方呢,也说这个静态资源啊,我们这个路径你都可以改变,SP resources static locations,因为我们现在呢,静态资源的路径默认是在这四个目录下找的,哎,我不想让他在这个目录下找,那怎么变办呢?来改变默认的静态资源路径,那我呢就可以使用一个简单的配置,哎,简单的配置我们叫static locations,就来配一下static locations,我们直接来让他给提示,它呢是spring resources spring资源策略下的一个配置项,然后呢,我来写什么,我来写这个叫class pass class pass呢?
12:33
代表我们所有的静态资源在类路径下来找一个位置,找谁呢?比如我们希望以后把所有的静态资源都放在我的哈哈文件夹下,只有哈哈文件夹才是我的这个静态资源文件夹,那这样的我一改变以后,接下来我们以前在其他这些文件夹里边放的静态资源就都找不到了,比如我们来访问一个支付宝。来看一下带res前缀,因为我们现在访问静态资源都得在带前缀,我们现在只是改变静态资源文件夹的路径,所以现在支付宝访问不了了,那我想要访问得了,必须把支付宝放到哈哈这个目录,好放到这个目录CTRLF9,我们来项目来重新让它编译一下,测试一下。
13:17
好,我来重新刷新,哎,我们来最好来重新启动一下啊,我们是在类路径下的,哈哈,文件夹里边呢,有一个支付宝,好重新启动访问。这是我们静态资源的这个路径。来测试一下。Res,支付宝刷新,诶,我们这个支付宝怎么没刷新过来,我们来可以确认一下啊,我们这个在,哈哈好class pass,哈哈好,我们再来加上一个杠,那就是哈哈这个文件夹下,哈哈文件夹下啊,来加上一个杠。
14:00
我们再来看一下效果。类路径,哈哈,文件夹下我们有一个支付宝PNG,好,我现在来测试刷新。来我们发现呢,它访问不到,那访问不到原因我们来确定一下啊,在这一块呢,打印no map get for支付宝啊我们这个他说这个支付宝呢,没有给我们映射,映射出来支付宝PNG,我们来确定一下啊,我们来静态资源的路径是class pass下的,哈哈,包括我们来点进去看人家默认的规则,诶默认规则呢,其实就是在这儿,人家的写法跟我们一样,也是class pass什么,我就来复制一个,而且呢,我们这个静态资源路径你也可以配多个,因为这是一个数组,那多个呢,数组的写法。那么来写一个数组写法,走这是class pass路径下的,我们来写一个,哈哈,好,我来重新写一个,哈哈,来启动一下啊。好,现在呢,我们来启动起来,我们来重新访问一下,那因为我们要访问静态资源,要res加上静态资源名,我这个res加静态资源名,我们来刷新。
15:10
他怎么一直访问不到呢?我再来确确定一下我们这个,哈哈,这块写的没啥问题,我把这个文件夹名变一下吧,比如我们叫ABC。好,我们来把这一块呢,也改一下,重启一下。看一下是不是咱们这个。Idea等问题。咱们现在呢,项目重新启动,那我们应该访问res下边的支付宝,那肯定就能来到ABC文件夹下找啊,现在又好了,要说这我们再改回哈哈,这个肯定是之前咱也不知道是这个编编器有啥问题,我们来再改回,哈哈,重新启动。
16:00
我们再来测试刷新,诶现在又好了啊,也就是说我们这种规则肯定是没问题的,我们按照官方文档来做,我们可以来改变我们静态资源的前置路径,以及静态资源默认的这个文件夹位置,当然你想写更多的文件夹位置逗号就行,然后呢,这是我们这个写法,另外呢,就是在我们这个spring boot官方文档里边,他说它还能外映射web JA下边的所有这web技术呢,大家也不用关心,我们后来呢,用的也比较少,也就是说炸它是一个什么东西,把我们的这个炸包,它给我们,把我们的这个这些相当于GSCSS这些东西,它弄成了一个炸包啊,比如我们来举一个例子,我来引入一些东西,我引入杰克瑞,杰克瑞呢,它给我们弄成了依赖,好,我们可以把这个杰克瑞这个依赖导进来。这依赖里边呢?是杰克瑞的GS文件,我们来测试一下。他也对这个web JA有支持,好,我们来说一下,他还支持我们这个web JA,这个web呢,大家了解一下就行了,他把这都是把我们常见的一些boosrip啦,解壳瑞啦,它弄成了炸包,弄成炸包以后呢,我们只需要引入这个炸包,We炸死的官方文,官方地址,你来在这搜搜你想要用的东西,Butrip之类的,哎,我现在搜到了一个杰克瑞,杰克瑞呢,被他弄成了炸包,弄成了炸包以后呢,我们就来导入,一导入以后它会自动映射,哎,自动映射,自动映射怎么自动映射呢?你只需要访问,你要问要这个杰克瑞这个静态资源,你是这样做的,来看一下啊,引入的这个炸包里边有解克瑞,来找一下杰克瑞。
17:49
在这杰克瑞下边呢,我们能看到这个展开展开克瑞下边大家看到这个炸包内路镜下是不是有Meta info啊,Meta info是不是有resource啊,这其实这不就是我们说的默认的静态资源路径嘛,然后呢,下边有web,然后呢有解query,有351,所以呢,我们要想要访问解query,我们的完整路径就是。
18:11
完整路径就是web。按照人家官方文档,就是你访问的是web什么什么什么,那我们呢,就应该是访问的是web jas下边的,呃,我们现在想要用j query,那就是杰克RY351,你就按照这个目录往下访问就行了,J query。然后呢,351。然后我们杰克瑞点GS,哎,我们杰克瑞GS或者呢,杰克瑞命GS都行。但是杰克病GS跟这个GS它其实不是真正的层级关系,好,那这个杰克瑞,那我们杰克瑞GS看一下杰克瑞GS。好,我们这个项目启动,对我们这个引入web,我们项目一定要重启啊。
19:00
引入了新的依赖,我们项目重启以后我们来测试。嗯。现在来测试,来刷新,诶,我们杰克的静态文件就来了,这就是我们静态资源的配置规则,就是我们这几个,那最终呢,访问地址是web jas,加上我们这一堆。走这那主要web后边的这一块,这一块是呢,后边是来决定后边地址要按照要按照我们这个依赖的地址,按照依赖里边的包路径,包括如果我们想要用杰克瑞命GS啊,不想要用完全版的压缩版的哎,也能直接访问好没问题。
我来说两句