Spring boot资源文件映射问题

版本

1.5.7

注意

经过测试,在1.4.2的版本下,项目打包成jar文件,可以访问到html和jsp文件,但是在1.5.6以上的版本中,就只能访问到html页面,访问jsp文件只会有404,官网的文档的解释是 src/main/webapp 这样的目录在打包成jar包,会被大多数构建工具所忽略。关于这一点我使用了resources插件也不能解决。

资源文件在自己的自定义目录

spring boot默认把资源文件存放的地址是:
默认配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
默认配置的 /webjars/** 映射到 classpath:/META-INF/resources/webjars/

我的项目结构

Spring boot资源文件映射问题_第1张图片

POM

 
        <dependency>
            <groupId>org.apache.tomcat.embedgroupId>
            <artifactId>tomcat-embed-jasperartifactId>
        dependency>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>jstlartifactId>
        dependency>

application.properties

spring.mvc.static-path-pattern=/webapp/**
#classpath下  绝对路径
#spring.resources.static-locations=classpath:/webapp/

#相对路径
spring.resources.static-locations=/webapp/

访问html文件的效果

Spring boot资源文件映射问题_第2张图片

JSP文件

Spring boot资源文件映射问题_第3张图片

访问jsp文件

配置前缀后缀等

  @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/webapp/WEB-INF/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }


----------
#或者

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp

Spring boot资源文件映射问题_第4张图片

可以访问到index.html,就是不能访问到index.jsp文件,并且已经配置了jsp解析器了,为什么就是访问不到呢?怀疑不能直接访问jsp文件,配置转向控制器

配置Controller看看能不能解决问题

Spring boot资源文件映射问题_第5张图片

Spring boot资源文件映射问题_第6张图片

还是找不到文件

解决方案

在百度查找资料,发现都是千篇一律,都不行。经过科学上网,找到一种解决方案

那就是在pom中使用resources插件

<resources>
   
   <resource>
      
      <directory>src/main/webappdirectory>
      
      <targetPath>META-INF/resources/webapp/targetPath>
      <includes>
         <include>**/**include>
      includes>
   resource>
   <resource>
      <directory>src/main/resourcesdirectory>
      <includes>
         <include>**/**include>
      includes>
      <filtering>falsefiltering>
   resource>
resources>

加入后看看效果

Spring boot资源文件映射问题_第7张图片

Spring boot资源文件映射问题_第8张图片

这样都可以访问成功,猜测是resources目录的配置,于是我们来改变看看

改变resource目录

Spring boot资源文件映射问题_第9张图片

Spring boot资源文件映射问题_第10张图片

分别访问jsp文件和html文件

Spring boot资源文件映射问题_第11张图片

Spring boot资源文件映射问题_第12张图片

Spring boot资源文件映射问题_第13张图片

改变application中的static文件映射,改为classpath下,充classpath下找

spring.mvc.static-path-pattern=/webapp/**
#classpath下  绝对路径
spring.resources.static-locations=classpath:/webapp/

Spring boot资源文件映射问题_第14张图片
Spring boot资源文件映射问题_第15张图片

Spring boot资源文件映射问题_第16张图片

总结

resources的文件设置目录必须是在META-INF/resources/下,目前到不清楚是为什么,只是觉得真是坑爹啊。

在不使用模版的情况下,需要自定义资源文件的目录,建议使用resources插件,并且只能配置在META-INF/resources/下,才能成功映射。目前我只发现这种方案。希望对你有所帮助
官方文档的说明是
Spring boot资源文件映射问题_第17张图片

你可能感兴趣的:(Spring,boot)