静态资源包括:HTML、CSS、JS、图像、视频、PDF/Office等不需要服务器端处理的文件。
(1)文件位置
Maven工程,静态文件放在src/main/webapp/下。
引用
Project Root
└─src
└─ main
└─ webapp # Web应用的根目录
└─ static
└─ css
└─ app.css
打包发布到Tomcat后文件路径是:
引用
<TOMCAT_HOME>/webapps/spring-boot-sample/static/css/app.css
访问URL:
http://localhost:8080/spring-boot-sample/static/css/app.css
(2)Tomcat的请求响应
Tomcat通过 org.apache.catalina.servlets.DefaultServlet 来响应所有请求处理。
<TOMCAT_HOME>\conf\web.xml。
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Servlet 3.0+以后war中jar文件 META-INF/resources 也是Web应用的根目录。
引用
spring-boot-sample.war
└─ WEB-INF
└─ lib
└─ foo.jar
└─ META-INF
└─ resources # Web应用的根目录
└─ static
└─ css
└─ foo.css
访问URL:
http://localhost:8080/spring-boot-sample/static/css/foo.css
(2)Spring MVC的请求响应
通常Spring工程将所有请求都分发给DispatcherServlet,这样就不会调用Tomcat的DefaultServlet,静态文件也就访问不到了。
src/main/webapp/WEB-INF/web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
继续使用DefaultServlet响应静态文件的话,需要开启请求Forward到DefaultServlet。
org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
或者采用Spring MVC自己的静态文件处理
org.springframework.web.servlet.resource.ResourceHttpRequestHandler
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/")
.setCachePeriod(604800);
}
}
(3)SpringBoot的请求响应
SpringBoot已经自动将「/static」「/public」「/resources」「/META-INF/resources」识别为资源文件夹。
引用
Project Root
└─src
└─ main
└─ resources
├─ static
| └─ css
| └─ a.css
├─ public
| └─ css
| └─ b.css
├─ resources
| └─ css
| └─ b.css
└─ META-INF
└─ resources
└─ css
└─ d.css
访问URL:
http://localhost:8080/css/a.css
http://localhost:8080/css/b.css
http://localhost:8080/css/c.css
http://localhost:8080/css/d.css
详细配置:
src/main/resources/application.properties
引用
spring.resources.static-locations=classpath:/static/
spring.resources.cache-period=604800
spring.resources.chain.gzipped=true
spring.resources.chain.cache=false
spring.resources.add-mappings=false
使用方法:
引用
──resources
├─static
│ ├─css
│ │ index.css
│ └─js
│ index.js
└─templates
index.ftl
<link rel="stylesheet" type="text/css" href="/css/index.css">
<script type="text/javascript" src="/js/index.js"></script>
版本管理:
由于浏览器会对静态文件进行缓存,所有服务器端修改后的静态文件不会立即被浏览器重新加载,通常会在资源文件URL的后边添加一个标示(时间戳或版本号),修改时也同时修改该标示,由于URL不同,浏览器就会重新加载该资源文件了。
<script type="text/javascript" src="/js/sample.js?201702091030"></script>
<script type="text/javascript" src="/js/sample.js?v=1.0.1"></script>
a - 资源名MD5 方式
src/main/resources/application.properties
引用
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
b - 版本号 方式
src/main/resources/application.properties
引用
spring.resources.chain.strategy.fixed.enabled=true
spring.resources.chain.strategy.fixed.paths=/js/**,/v1.0.0/**
spring.resources.chain.strategy.fixed.version=v1.0.0
分享到:
相关推荐
赠送jar包:spring-boot-actuator-autoconfigure-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-actuator-autoconfigure-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-actuator-autoconfigure-2.3.12....
赠送jar包:seata-spring-boot-starter-1.3.0.jar; 赠送原API文档:seata-spring-boot-starter-1.3.0-javadoc.jar; 赠送源代码:seata-spring-boot-starter-1.3.0-sources.jar; 赠送Maven依赖信息文件:seata-...
赠送jar包:spring-boot-configuration-processor-2.6.3.jar; 赠送原API文档:spring-boot-configuration-processor-2.6.3-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.6.3-sources.jar; ...
赠送jar包:spring-boot-configuration-processor-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-configuration-processor-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-...
赠送jar包:druid-spring-boot-starter-1.1.9.jar; 赠送原API文档:druid-spring-boot-starter-1.1.9-javadoc.jar; 赠送源代码:druid-spring-boot-starter-1.1.9-sources.jar; 赠送Maven依赖信息文件:druid-...
赠送jar包:mybatis-spring-boot-autoconfigure-1.3.2.jar; 赠送原API文档:mybatis-spring-boot-autoconfigure-1.3.2-javadoc.jar; 赠送源代码:mybatis-spring-boot-autoconfigure-1.3.2-sources.jar; 赠送...
赠送jar包:spring-boot-configuration-processor-2.5.6.jar; 赠送原API文档:spring-boot-configuration-processor-2.5.6-javadoc.jar; 赠送源代码:spring-boot-configuration-processor-2.5.6-sources.jar; ...
赠送jar包:aliyun-sms-spring-boot-starter-2.0.2.jar 赠送原API文档:aliyun-sms-spring-boot-starter-2.0.2-javadoc.jar 赠送源代码:aliyun-sms-spring-boot-starter-2.0.2-sources.jar 包含翻译后的API文档...
赠送jar包:spring-boot-autoconfigure-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-autoconfigure-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-autoconfigure-2.3.12.RELEASE-sources.jar; 赠送...
赠送jar包:druid-spring-boot-starter-1.1.10.jar; 赠送原API文档:druid-spring-boot-starter-1.1.10-javadoc.jar; 赠送源代码:druid-spring-boot-starter-1.1.10-sources.jar; 赠送Maven依赖信息文件:druid-...
赠送jar包:oss-spring-boot-starter-1.0.3.jar; 赠送原API文档:oss-spring-boot-starter-1.0.3-javadoc.jar; 赠送源代码:oss-spring-boot-starter-1.0.3-sources.jar; 赠送Maven依赖信息文件:oss-spring-boot...
赠送jar包:nacos-config-spring-boot-autoconfigure-0.2.7.jar; 赠送原API文档:nacos-config-spring-boot-autoconfigure-0.2.7-javadoc.jar; 赠送源代码:nacos-config-spring-boot-autoconfigure-0.2.7-sources...
赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...
赠送jar包:dynamic-datasource-spring-boot-starter-3.4.1.jar; 赠送原API文档:dynamic-datasource-spring-boot-starter-3.4.1-javadoc.jar; 赠送源代码:dynamic-datasource-spring-boot-starter-3.4.1-sources...
此资源包含spring-boot-starter-log4j2日志框架所需的jar包及版本,童叟无欺,真实有效,放心下载
赠送jar包:jasypt-spring-boot-3.0.4.jar; 赠送原API文档:jasypt-spring-boot-3.0.4-javadoc.jar; 赠送源代码:jasypt-spring-boot-3.0.4-sources.jar; 赠送Maven依赖信息文件:jasypt-spring-boot-3.0.4.pom;...
赠送jar包:oss-spring-boot-starter-1.0.3.jar 赠送原API文档:oss-spring-boot-starter-1.0.3-javadoc.jar 赠送源代码:oss-spring-boot-starter-1.0.3-sources.jar 包含翻译后的API文档:oss-spring-boot-...
赠送jar包:druid-spring-boot-starter-1.2.8.jar; 赠送原API文档:druid-spring-boot-starter-1.2.8-javadoc.jar; 赠送源代码:druid-spring-boot-starter-1.2.8-sources.jar; 赠送Maven依赖信息文件:druid-...
赠送jar包:spring-boot-admin-server-ui-2.5.2.jar; 赠送原API文档:spring-boot-admin-server-ui-2.5.2-javadoc.jar; 赠送源代码:spring-boot-admin-server-ui-2.5.2-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:druid-spring-boot-starter-1.1.9.jar; 赠送原API文档:druid-spring-boot-starter-1.1.9-javadoc.jar; 赠送源代码:druid-spring-boot-starter-1.1.9-sources.jar; 赠送Maven依赖信息文件:druid-...