往期精彩css
引言:
SpringBoot web项目开发中每每会涉及到一些静态资源的使用,好比说图片,css样式,js等等,今天咱们来说讲这些常见的静态资源应该放在哪一个位置,怎么放在本身想放的位置。html
目录html5
1. 项目建立
咱们先建立一个空的项目,项目的依赖配置为starter-web依赖,建立好的项目下面有一个resources文件夹,里面有一些空的默认的文件夹,而后有一个配置文件。java
templates文件下面通常是放置模板页面的,好比html,jsp之类的,static文件通常是是放置静态资源,好比说,图片,文件等等。web
咱们放置了文件或者是图片就须要访问这个文件,看看怎么才能有效的实现访问这些静态资源文件,以及本身访问本身定义好的资源访问路径。spring
2. 资源文件访问与配置
通常来讲,咱们是作先后端分离的,Springboot就做为后端,可是Springboot依然支持有html文件等,实现先后端在一个项目里面。也就是Springboot web项目。后端
首先,咱们在templates文件夹下面建立一个名为index的html5页面,而后随便写一点东西,而后在配置文件中,配置一个项目启动端口。浏览器
html5文件springboot
配置文件端口配置再也不讲解,前一期里面有配置文件详解,不会的能够回去看看。
启动项目,浏览器输入:localhost:8088/index.html
你会发现页面是404,这时候咱们是访问不了这个页面的。而后你可能会说localhost:8088/templates/index.html,你会发现都不行都不行!mvc
由于Springboot的默认资源配置里面没有这个templates路径,可是有static路径。
1.Springboot中默认的静态资源路径:
- classpath:/static,
- classpath:/public,
- classpath:/resources,
- classpath:/META-INF/resources,
classpath 在项目中就至关于src/main/resources文件夹.
就是说若是你把html文件直接放在static路径下面是能够直接访问的,有两种访问方式。
当你添加了start-web的依赖,resources下面是会默认生成一个static文件夹以及templates文件夹。
2.自定义静态资源路径。
spring.resources.static-locations=classpath:templates/
咱们配置了静态资源路径映射以后,咱们只能访问这个路径下面的资源,也就是至关于自定义了静态资源路径,就是说默认的静态资源路径都会失效。
3.两种访问静态资源的方式
一种是直接经过特定的URL访问:咱们配置好后,启动项目,浏览器输入:localhost:8088/index.html 就能够正常访问咱们的静态资源了。
效果图以下
而后还有一种访问资源的方法。是使用代码是实现的。
咱们在和启动文件同级目录下面建立一个controller文件夹,而后建立一个Testcontroller,代码以下:
/** * @author 全栈学习笔记 * @date 2020/4/12 12:20 * @description */ @Controller public class TestController { @RequestMapping("/getHtml") public String getHtml(){ return "index.html"; } }
说明:这个@Controller ,意思标记这个类为控制类,或者说他是一个Springmvc controller对象,标记以后,默认这个类的全部方法返回的是一个页面。而后这个@RequestMapping的注解是一个用来处理请求地址映射的注解,可用于类或方法上。用于方法之上时,你能够经过URL直接访问这个方法。它还有一些其余的参数,这里就不讲解了。后面会出一期Springboot经常使用注解的说明。有兴趣的能够 wx 搜索 全栈学习笔记。
到这里,咱们就能够利用自定义URL访问静态资源了。在浏览器里面输入:localhost:8088/getHtml 也能正常访问静态资源。图片也是同样的。
3. 其余静态资源路径配置方式
1. 继承WebMvcConfigurerAdapter
咱们经过重写这个类的addResourceHandlers方法,定义资源路径
/** * @author 全栈学习笔记 * @date 2020/4/12 15:46 * @description */ @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/","classpath:templates/"); super.addResourceHandlers(registry); } }
2. 优化配置
你会看到以前的那种利用代码的URL路径访问静态资源文件的写法,咱们须要在返回的地方写上文件的名称以及文件的后缀名,当咱们要返回某一类型的文件时,这样写就相对比较麻烦,因此咱们能够经过如下配置来解决这个问题。
#加前缀 spring.mvc.view.prefix=/ #加后缀 spring.mvc.view.suffix=.html
经过以上的配置,咱们以前的controller里面的方法返回就能够写成这样。
@RequestMapping("/getHtml") public String getHtml(){ return "index"; }
总结:
静态资源配置路径的两种经常使用方式: 一种是默认配置,一种是自定义配置,自定义配置能够是代码配置,能够是配置文件里面配置。这两种配置方式都会使原来默认的配置方式失效。
静态资源的访问方式有两种:一种是本身用代码定义路径,而后访问,一种是直接利用特定的URL方式访问静态资源。