如何在SpringBoot项目中访问静态资源

在springboot项目中如果要在不集成templates的情况下访问静态资源需要做以下配置

1.在项目的application.yml文件中做如下配置

spring:
  profiles:
    active: dev
  mvc:
    view:
      prefix: /
      suffix: .html

重点在

配置后生成为WebMvcProperties 配置类。该配置类中有一个内部类View

@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {

View类可以配置视图的前缀和后缀

public static class View {

		/**
		 * Spring MVC view prefix.  前缀
		 */
		private String prefix;

		/**
		 * Spring MVC view suffix.  后缀
		 */
		private String suffix;

2.在项目的resource路径下新建文件夹

在ResourceHttpRequestHandler类的getResource方法中调用了getLocations()方法。

getLocations()方法返回的locations来自与springboot项目,其中时配置类ResourceProperties赋值。赋值的数据为

"classpath:/META-INF/resources/",

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"

四个路径

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties {

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

	/**
	 * Locations of static resources. Defaults to classpath:[/META-INF/resources/,
	 * /resources/, /static/, /public/].
	 */
	private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;

所以要访问静态资源需要配置到这四个路径下,如果所示

3.API端按如下编码

@Controller
public class PageApi {

    @GetMapping({"/", "/index"})
    public String toPage(String id){

        return "index";
    }
}

总结:

按照上面的配置后我们就可以访问到静态资源。

经验分享 程序员 微信小程序 职场和发展