springboot mvc读取静态资源文件读取不到

3 篇文章 0 订阅
2 篇文章 0 订阅

问题:

发现请求static/css/tree/ztree.diy.css 请求不到。

调试过程:

Debug 进入 springmvc DispatcherServlet -> FremeWorkServlet -> 进入doGet请求,进入springboot的默认几个资源请求组合位置:

Public

Resources

static

...

 

+ /css/tree/ztree.diy.css

 

结果发现 组合到static/css/tree/ztree.diy.css 获取不到resource资源。

 

最终发现

如下代码执行返回为空:

ClassPathResource中 this.classLoader.getResource(this.path)

	@Nullable
	protected URL resolveURL() {
		if (this.clazz != null) {
			return this.clazz.getResource(this.path);
		}
		else if (this.classLoader != null) {
			return this.classLoader.getResource(this.path);
		}
		else {
			return ClassLoader.getSystemResource(this.path);
		}
	}

返回的url为空。

思来想去 classloader不应该获取不到文件呀。

 

于是乎,进行maven package重新编译打包项目。再次运行就获取到了。

 

总结:

原来还是文件没有完全发布成功啊。。。

 

 

补充:

今天又遇到了所有静态资源读取不到的问题。采用同样的方法debug

依次进入:

org.springframework.web.servlet.DispatcherServlet#getHandler(HttpServletRequest)

org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping#handleNoMatch(Set<RequestMappingInfo> infos, String lookupPath, HttpServletRequest request)

org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.PartialMatchHelper#PartialMatchHelper(Set<RequestMappingInfo> infos, HttpServletRequest request)

发现今天资源被一个post请求给拦截了

于是查找控制器发现了罪魁祸首,使用PostMapping必须得带value,不然会拦截到静态资源的访问

 

果然加上value后即可访问成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值