Springboot web工程

背景

目前,基于servlet 3.0web具有两种发布方式:1. 采用独立的web容器,以war包的形式发布;2. 采用内嵌式容器,以jar包方式发布。 spring boot提供了两者的继承方案。 现针对当前技术栈中使用最多的jar包发布方式进行相关说明。

工程结构

spring boot的工程结构,采用maven标准的工程结构。

src/main/java
src/main/resource
          |__________static
                        |_________js
                        |_________images
                        |_________css
          |----------public
                        | index.html
                        | index.vm

其中java目录下存放所有的工程源码,resource目录下存放配置文件、静态资源、页面等。
static目录:主要存放静态文件:如js、图片等
public目录下主要存放页面、模板等相关的展示文件。

举个栗子

imges目录下的demo.jpg 在HTML/JSP中访问是的路径就是<img src="/images/demo.jpg">, 因为Spring Boot的 缺省工作目录就是src/main/java, 当访问资源时,就是src/main/resources, 而/static/**被SPRING BOOT被映射到了classpath:/static下。所以也可以不带起始的“/”,直接写成<img src="images/demo.jpg">。此处建议使用相对路径,或者是使用带server.contextPath的绝对路径。
在此,我们的静态资源存放在 classpath:/static,且映射的 url 为 /

Spring boot静态资源加载

Spring boot对于静态资源的加载过程,在WebMvcAutoConfiguration类中,具有完整的体现。
其中:

String staticPathPattern = "/**"   
String[] CLASSPATH_RESOURCE_LOCATIONS = {
      "classpath:/META-INF/resources/", "classpath:/resources/",
      "classpath:/static/", "classpath:/public/" };

也就是说,spring boot在检测到该工程是一个web工程时,在默认的情况下会自动加载上述目录下的所有资源。 注意:无需使用 @EnaleWebMvc 注解。使用了 @EnableWebMvc 注解后 WebMvcAutoConfiguration 提供的默认配置会失效,必须提供全部配置。

配置资源加载位置

我们使用 spring boot 提供的编写配置文件的方式,实现上面资源配置。

application.properties

设置静态资源的存放地址

spring.resources.static-locations=classpath:/resources 
。。。。。。

建议参看:深入 Spring 系列之静态资源处理以获取详细信息。

最后介绍一下如何查看这些配置的技巧:

通过查看 ResourceProperties 这个类可以看到,该类顶部有一个注解 @ConfigurationProperties(prefix="spring.resources", ignoreUnknownFields = false)。

ConfigurationProperties 是用来注入值的,prefix = “spring.resources” 表示前缀。比如我们配置文件中的 spring.resources.static-locations=classpath:/resources 这个配置,去掉 spring.resources 这个前缀,剩下的为 static-locations ,则它的值 classpath:/resources 会被注入到 ConfigurationProperties 类的 staticLocations 成员变量中。通过这种方法,我们就能通过编写配置文件改变类的状态而无需编写代码。当然,如何使用这些配置的关键还是要知道这些成员变量的作用。

自定义位置

如果我不太满意目前的目录结构,可以通过自定以的方式,调整springboot的资源加载。

@Configuration
public class MyWebAppConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/myResource/**").addResourceLocations("classpath:/myResource/");
        super.addResourceHandlers(registry);
    }   
}

目录结构为:

src/main/resource
          |__________myResource

如果newDemo.jpg放在src/main/resource/myResource/images/newDemo.jpg,那么就可用<img src="image/newDemo.jpg">访问。
在此,我们的静态资源存放在 classpath:/myResource,且映射的 url 为 /myResource

注意:此处的路径是是添加,不是替换,添加不影响原来的默认约定。非要自定义,那就配置类继承WebMvcConfigurerAdapter

webjars

http://blog.csdn.net/xichenguan/article/details/52794862

参考:

http://www.cnblogs.com/chry/p/5877979.html
https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot
http://blog.csdn.net/xichenguan/article/details/52794862

转载于:https://my.oschina.net/u/1011659/blog/1583278

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值