[spring mvc踩坑填坑]spring mvc文件上传路径问题

在使用Spring MVC开发新闻发布系统时,遇到富文本编辑器kindEditor的文件上传路径问题。原本将文件上传至src下的webapp目录,但访问新上传文件时出现404错误。排查发现,静态资源存在缓存设置,导致403状态,而非服务器问题。最终发现,由于Maven编译将资源放入target目录,每次启动服务器时,新上传的文件需重新编译才能访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己在做一个新闻发布系统时,用到了一个富文本编辑器,kindEditor。之前用c#的mvc做项目的时候用过,感觉很好用,所以这次也是采用了kindEditor。但是但是!!spring mvc给我的感觉是对静态资源的管理和使用太不方便了,还存在各种路径问题。

文件上传问题在本篇就不说了,主要记录一下遇到的关于路径的问题。文件上传时,会指定文件上传路径,因为之前我的静态资源文件都是放在src文件下的webapp中。所以我在上传文件时候就是将文件上传至这个目录下。可是这么想发现不对,文件上传没问题,已经上传到指定位置,但是我在访问新上传文件时候遇到了404的错误,但是之前上传的图片是可以访问的,当时感觉非常奇怪。src文件如下。

当时的反应是不是静态资源的缓存问题。在查阅资料发现,静态资源还真有缓存的设置

    <mvc:resources mapping="/upload/images/**" location="/WEB-INF/statics/upload/images/" cache-period="60"/>
cache-period代表客户端浏览器保存缓存的时间。计算方法3153600=365*24*60*60s=1年。

这样配置后,SpringMVC会自动给静态资源Response添加缓存头Cache-Control和Expires值,如下图所示


请求状态为403,不会再次从服务器得到图片,利用了浏览器缓存,节约请求的流量和请求时间。

但这并不是我要解决的问题,因为缓存是客户端的事情,并不我服务器的问题。经过查询,发现是我上传文件地址的问题,因为javaweb的项目在每次编译的时候都会产生一个target文件夹,是maven编译目录,包含中间过程文件和最终的工件,所以每次调用的是target的资源。所以会产生本次上传的资源本次无法使用,重新启动服务器后就可以访问,因为重新编译后,就把上次的资源打包到了target中。找了一个晚上的问题..终于解决了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值