JSP项目打包WAR部署后图片无法加载问题求助
解决方案:WAR部署后JSP图片无法显示问题
1. 修正图片路径写法
你的JSP中图片路径使用了Windows反斜杠\,且未考虑Web应用的上下文路径,这是核心问题之一。修改图片标签的src属性:
<td><img src="${pageContext.request.contextPath}/img/${pl.img}" width="40" height="40" alt=""></td>
${pageContext.request.contextPath}会自动获取当前Web应用的上下文路径(比如部署后路径是/toy,这个变量就会返回/toy),确保图片请求路径始终正确,不受部署上下文影响。- Web环境统一使用正斜杠
/作为路径分隔符,避免跨平台问题。
2. 确认图片资源被正确打包进WAR
检查资源位置
确保img目录位于Web项目的资源根目录下:
- 如果是Maven项目,放在
src/main/webapp目录下; - 如果是普通IDEA Web项目,放在
web目录下。
只有放在这个目录下的资源,打包时才会被自动包含进WAR文件。
验证打包配置
- 打开IDEA的
File -> Project Structure -> Artifacts; - 找到你创建的WAR artifact,检查
Output Layout中是否包含img目录(应该在WEB-INF同级); - 如果缺失,点击
+ -> Directory Content,选择你的img目录所在的Web根目录,添加进去。
检查WAR包内容
打包完成后,解压WAR文件,确认根目录下存在img文件夹,且里面包含对应的图片文件。如果没有,说明打包配置有误,需要重新调整。
3. 关于out目录的说明
IDEA运行项目时,out目录是用来存放编译后的类文件、Web资源等临时文件的,打包WAR时不需要依赖out目录。正常打包应该基于项目的源代码和Web根目录生成,所以无需担心out目录的影响。
额外验证步骤
部署WAR后,打开浏览器的开发者工具(F12),切换到Network标签,刷新页面查看图片的请求URL:
- 如果返回404,说明路径仍然错误,检查上下文路径和图片实际存放位置是否匹配;
- 如果返回200但图片不显示,检查图片文件是否损坏,或者文件名是否和数据库中存储的一致。
内容的提问来源于stack exchange,提问作者Eustia
相关产品推荐
相关产品推荐

