spring boot + maven项目引用静态资源404问题

朋友昨天做了一个新的项目,用sring boot+maven聚合项目在web子项目中引用html和.js文件时前台一直报404错误。

用到了thymeleaf模板,项目配置文件用的是spring boot 支持的.yml为后缀文件做配置,这里没有做对js或者img或者jsp下的过滤/拦截。下面是项目目录结构

yxt 项目  静态资源文件我是放在  src/main/resources/static/js/xx.js

项目启动: localhost:8080  直接会访问 templates下的index.html页面,但是index的js没有找到static下的jquery.js文件


我当时的理解是spring boot 没有对当前需要引用的静态资源文件做配置(拦截/过滤) ,一般SringMvc框架对静态资源文件的访问是在它的spring-mvc.xml文件中通过 mvc:resources 标签对每一个需要访问的静态文件/图片 进行拦截

springMvc引用静态资源处理方法:

<mvc:resources mapping="/js/**" location="/WEB-INF/views/js/" />

 <mvc:resources mapping="/jsp/**" location="/WEB-INF/views/jspOrhtml/" />

而我当前spring boot项目引用的是yml文件 ,百度了一下yml的语法

spring boot 中以.yml为后缀访问静态资源文件的处理方法

  resources:

      static-locations:["/templates/","/static/"]

意思是访问src/main/resources/static 或者 templates下的文件(静态资源或html、jsp)

如果是application.properties   则解决方法是

spring.mvc.static-path-pattern=/static/**   

意思是访问static下的静态资源文件

添加好后项目能够正常引用其他静态文件了,我按照这种方式去对另一个项目进行静态资源文件的访问发现依然报404 之后我对照了访问静态文件的路径、配置,以及html中引用的地方,发现依然是访问不了。

之后我打印两个项目启动时的日志文件用beyond compare对比工具:

2018-05-11 23:09:52.391  INFO 8512 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-05-11 23:09:52.391 [localhost-startStop-1] INFO  o.s.boot.web.servlet.FilterRegistrationBean - Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

以上是访问不了js、css等静态资源文件的项目启动打印日志多出来的内容,大概意思是hiddenHttpMethodFilter过滤器没有找到/*下的文件,可能是后台某个配置文件没有配置又或者是映射不到相应的内容,


我查看了.yml的配置文件,发现两个项目除了server 端口号不一样意外,两个spring boot的项目配置基本一样,所以我排除了配置文件的问题,前台路径也一样,以及maven、jdk等jar包都没有缺少,之后我在启动的这个主入口(springBootApplication)里面看到这个项目多了@enableWebMvc 注解,注释掉这个注解后启动可以引用静态在资源文件了

@enableWebMvc 把这个注解注释掉后就能够引用其他js文件了。百度了下@enableWebMvc这个注解的含义:

表示启动spring mvc特性,也就是说可以通过这个注解,然后在java代码代码中实现对js或css的页面的过滤/拦截



  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值