先来看看我昨天写的登录网页:
真的是废了一番功夫,而且前端还有兼容性的问题,我在edge上仿着视频写得网页没有实现同样的 效果,半天不得解决方法,想着换个浏览器到qq浏览器就正常显示了。然后我就把这个在webstorm写好的网页连带需要的资源复制到了idea的项目里,其中html放在templates文件夹下,其他css,js放在static下自建的css,js文件夹下
在idea里打开login.html可以看到和webstorm差不多的东西:
这个时候点这些图标在浏览器上是显示不全的,因为这个时候网页里对静态资源的请求是不过tomcat服务器的,比如我网页里有一行
<script src="/js/jquery.min.js"></script>
在不经过tomcat服务器的情况下鬼知道 / 指的根目录是哪里,而且就算我这样写:
<script src="js/jquery.min.js"></script>
也需要在login.html的同级目录下有这个文件,像在webstorm里的目录结构一样,像上面那样写是因为springboot配置了默认的资源映射:
其中默认配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
PS:上面的 static、public、resources 等目录都在 classpath: 下面(如 src/main/resources/static)。
所以我们的 /js/jquery.min.js会自动映射到classpath:static/js/jquery.min.js 怕有人不知道,classpath就是src/main/resources/
以后我们访问资源都是在web服务器上访问了,所以以后的路径都要在前面带一个 / 然后由springboot配置的资源映射器去映射路径。
不知道上面对静态资源怎么访问说清楚没有,然后讲讲对网页的访问,网页也是静态资源,在我们不知道什么模板引擎的情况下怎么访问login.html呢,上面已经说了spring默认配置的静态资源会去哪里找。就是下面五个地方:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
/:当前项目的根路径
而我们哪怕我们这样写
localhost:8080\bookmanage\src\main\resources\templates\login.html
由于bookmanage\src\main\resources\templates这一段和/**的 ** 匹配上了,所以springboot也会看看在上面的五个地方有没有,首先bookmanage这个文件夹就没有,所以会报错。
怎么办呢?我们可以更换默认的映射约定,通过我们自己的配置,由于springboot 通常如果自己配置的话那他自己的就全部失效了(这里就是),所以我们写把原来的五个全部写上再加上对templates文件夹的访问,就是在application.properties文件夹里这么写:
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/templates/
然后我们就可以在地址栏这样访问我们的html文件了:
localhost:8080/login.html
是不是很爽😄
然后还有关于访问URL的映射,好像是和什么模板引擎有关的,等我学会了再告诉大家吧,再见!