静态资源与首页展示【源码剖析】

简介: 静态资源与首页展示【源码剖析】

如果是一个web应用,在main下面会有个webapp,之前都是将所有页面导在这里;现在springboot也有静态资源放置的位置,但是有规定!


首先,了解一下静态资源映射规则!


在idea界面double Shift键:搜索WebMvcAutoConfiguration,SpringMVC的web配置都在这个配置类里面,其中有一个方法:addResourceHandlers 添加资源处理

image.png

第一种静态资源映射规则!


源码解析:看一下/webjars/**,都需要去 classpath:/META-INF/resources/webjars/ 找相对应的资源,Webjars本质就是以jar包的方式引入我们的静态资源


比如要使用jQuery,我们只需引入jQuery对应版本的pom依赖即可!

image.png

查看webjars目录结构

image.png

访问:http://localhost:8080/webjars/jquery/3.4.1/jquery.js

image.png

第二种静态资源映射规则!

可以在staticPathPattern发现第二种映射规则 :/** , 说明可以访问当前项目的任意资源image.png

它会去找 resourceProperties 的Resources类,我们可以点进去看一下分析:

image.png

它会去寻找资源的文件夹,即数组的内容。


优先级:resources>static(默认)>public


所以四个目录存放的静态资源可以被我们识别


比如访问 http://localhost:8080/1.js即可以访问出内容


自定义静态资源路径:在application.properties中配置;


spring.mvc.static-locations=classpath:/Long/**

一旦自己定义了静态文件夹的路径,原来的自动配置就都会失效了!

现在我们来看看首页是如何处理的,先去看看源码

image.png

继续看getIndexHtml

image.png

访问:http://localhost:8080/       就会找静态资源文件夹下的 index.html

相关文章
|
Java API 数据库
Java一分钟之-JPA注解:@Entity, @Table, @Id等
【6月更文挑战第14天】Java Persistence API (JPA) 是Java开发中的ORM框架,通过注解简化数据访问层。本文介绍了三个核心注解:`@Entity`标识实体类,`@Table`自定义表名,`@Id`定义主键。易错点包括忘记添加`@Entity`、未正确设置主键。建议使用`@GeneratedValue`和`@Column`细化主键策略和字段映射。正确理解和应用这些注解能提高开发效率和代码质量。
1198 3
|
架构师 中间件 API
微服务和 SOA 的 6 大核心区别,你都知道吗?
本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务和 SOA 的 6 大核心区别,你都知道吗?
|
JSON Java UED
uniapp:使用DCloud的uni-push推送消息通知(在线模式)java实现
以上展示了使用Java结合DCloud的uni-push进行在线消息推送的基本步骤和实现方法。实际部署时,可能需要依据实际项目的规模,业务场景及用户基数进行必要的调整和优化,确保消息推送机制在保证用户体验的同时也满足业务需求。
1468 0
|
机器学习/深度学习 算法 决策智能
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(下)
ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别(下)
893 0
|
设计模式 Python
一日一技:在 Python 里面如何实现一个抽象类
一日一技:在 Python 里面如何实现一个抽象类
344 0
一日一技:在 Python 里面如何实现一个抽象类
|
缓存 Java Linux
Java IO
2107 0
|
Web App开发 安全 CDN
在iis6中启用Gzip
现在主流浏览器基本都支持 Gzip 压缩,因此这也成了 WebServer 优化策略的一种常规手段。启用压缩后能有效减少网页传输数据大小,使得有限带宽能提供更多的请求,并在一定程度上提高了网页 “显示” 速度。
1251 0
Confluence 6 用户宏示例 - Hello World
下面示例显示了如何创建一个用户宏,在这个用户宏中显示文本 'Hello World!' 和任何用户在宏内容中输入的内容。 Macro name helloworld Visibility Visible to a...
1473 0