`
rensanning
  • 浏览: 3547939 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38135
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607261
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682256
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89318
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401805
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91692
社区版块
存档分类
最新评论

Spring Boot 入门 - 基础篇(4)- 静态资源

 
阅读更多
静态资源包括: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
分享到:
评论
1 楼 www88485400 2017-04-26  
静态方法测试不出来 加上springmvc的方式才出来,不知道是怎么回事

相关推荐

    精进-Spring-Boot-面试题1

    Spring Boot 项目结构通常包括 src/main/java 下的主类、配置类和业务逻辑,src/main/resources 下的静态资源、模板和配置文件。 在启动时运行特殊代码,可以使用 `@PostConstruct` 注解的方法。 Spring Boot 2.x ...

    spring boot搭建(二)

    在上一部分中,我们可能已经介绍了Spring Boot的基础知识和快速入门。在此阶段,我们将更进一步,通过代码示例深入了解Spring Boot的核心特性以及如何集成常用的数据库连接池Druid和SQL监控工具P6Spy。 首先,...

    Spring-Demo-1.zip

    5. **日志与资源**:项目可能包含`log`目录用于存放运行时的日志文件,以及`resources`目录,其中的`application.properties`或`application.yml`用于配置应用参数,静态资源如HTML、CSS、JavaScript也可能存于此。...

    Spring Boot技术栈博客企业前后端.txt

    根据提供的文件信息,我们可以推断出这篇文档主要讨论的是与Spring Boot技术栈相关的博客内容,尤其是聚焦于企业级应用中的前后端开发。接下来,我们将基于这些有限的信息来展开相关知识点的详细阐述。 ### Spring ...

    Spring Boot2 教程1

    在本篇"Spring Boot2 教程1"中,我们将探讨如何在Spring Boot 2.x应用中设置静态资源处理、视图解析以及路径映射。首先,Spring Boot 2.0 强调了Java配置的使用,而不是XML,尽管它仍支持XML配置,但推荐使用Java...

    Spring-Boot-Bbs:Spring启动公告板

    在本篇文章中,我们将深入探讨如何利用Spring Boot来开发一个公告板系统,即“Spring-Boot-Bbs”。这个项目将展示Spring Boot如何快速构建Web应用,并且集成数据库和模板引擎,以实现用户交互功能。 首先,让我们...

    17. Spring Boot普通类调用bean【从零开始学Spring Boot】

    首先,了解Spring Boot的基础概念是必要的。Spring Boot是一种简化Spring应用程序开发的框架,它通过提供预配置的依赖和自动配置功能,使得创建独立运行的、生产级别的Java应用变得简单。在Spring Boot应用中,所有...

    spring boot 开发 servlet filters listeners

    - 在某些情况下,我们可能希望使用 Servlet 来处理静态资源,而不是使用默认的 Spring Boot 配置。这可以通过自定义一个 Servlet 并指定其 URL 映射来实现。 2. **使用 Filter 实现统一的日志记录**: - 在 Web ...

    [课堂课件讲解]Java微服务实践-Spring Boot Web篇(上).pptx

    Java微服务实践中的Spring Boot Web篇涉及到静态内容的高效处理和动态内容的灵活生成。理解这些基础概念和技术对于构建高性能、可扩展的微服务至关重要。同时,模板引擎的使用进一步提升了Web应用的用户体验和开发...

    Spring Boot自定义错误页面

    在Spring Boot应用中,我们经常会遇到各种错误情况,如404 Not Found、500 Internal Server Error等。为了提供更友好的用户体验,Spring Boot允许我们自定义这些错误页面,而不是显示默认的Spring Boot错误页面。这...

    springboot265基于Spring Boot的库存管理系统.zip

    一、Spring Boot基础 Spring Boot是由Pivotal团队提供的全新框架,它旨在简化Spring应用的初始搭建以及开发过程。Spring Boot通过内嵌Tomcat、自动配置Spring等特性,让开发者能够快速地构建可运行的独立应用。在...

    TestProject.rar

    本篇文章将以"TestProject.rar"压缩包中的"Spring Boot基础demo"为例,深入探讨Spring Boot的基础知识和实战应用。 一、Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用...

    activiti-spring-examples下载

    本篇将围绕“activiti-spring-examples”这个压缩包中的示例,深入探讨如何在Spring环境中配置和使用Activiti。 首先,我们要理解Activiti的核心概念。Activiti设计了流程定义(Process Definition)和流程实例...

    初学spring项目(入门解读和新建项目)

    总之,"初学Spring项目(入门解读和新建项目)"这篇博文将引导你了解Spring框架的基本概念,学习如何使用Spring Initializr创建项目,并通过实际操作来熟悉Spring Boot的启动流程、MVC架构、数据库操作以及自动配置等...

    完整版的springboot深入实践

    ### Spring Boot深入实践知识点概述 ...通过上述内容的详细介绍,我们不仅了解了Spring Boot的基础概念和核心优势,还深入探讨了其实战案例和技术细节,希望能为读者在Spring Boot的学习道路上提供有价值的参考。

    SpringMavenExample:使用Maven的Spring Boot Framework 4

    本篇将详细介绍如何利用Maven与Spring Boot框架结合,创建一个名为"SpringMavenExample"的项目,帮助开发者深入理解这两者的集成与应用。 一、Spring Boot简介 Spring Boot是由Pivotal团队维护的Java框架,其设计...

    Vue项目部署在Spring Boot出现页面空白问题的解决方案

    通过上述步骤,我们可以确保Vue项目在Spring Boot环境中部署时,无论是首次加载还是刷新浏览器,都能正确加载静态资源,避免出现页面空白和404错误。请注意,每个项目的具体配置可能因环境而异,因此在实际操作中,...

    spring-medialibrary:媒体库Webapp示例来演示Spring Boot的用法

    在Spring Boot中,我们可以利用MultipartFile接口处理文件上传,而文件下载则可以通过StreamingResponseBody或者直接提供静态资源路径来实现。这些功能对于构建一个媒体库应用至关重要。 标签“Java”表明这个项目...

    springboot-03-web.zip

    本篇文章将深入解析一个基于Spring Boot构建的员工管理系统,虽然它目前仅是模拟数据库(未连接实际数据库),但已足够展示Spring Boot在构建Web应用方面的强大功能。 首先,让我们从项目结构开始。一个标准的...

Global site tag (gtag.js) - Google Analytics