You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat中图片请求已通过WebFilter但无法渲染问题求助

问题排查与解决方案

核心原因:图片资源存放位置错误

WEB-INF是Web应用的受保护目录,浏览器无法直接通过URL请求该目录下的资源。你的图片文件存放在WEB-INF/images目录下,但前端页面直接请求/images/xxx.png路径,导致服务器无法找到对应资源——即便过滤器放行该路径,也无法返回有效图片内容。

修复步骤

  1. 调整资源存放路径
    将WEB-INF/images目录移动到webapp根目录下(与WEB-INF同级),让静态图片处于浏览器可直接访问的区域。

  2. 修正页面图片引用
    确保JSP页面中的图片引用带上上下文路径,避免因项目部署路径导致的错误:

    <img src="${pageContext.request.contextPath}/images/logout_button.png" />
    
  3. 优化过滤器Session处理(可选)
    过滤器中request.getSession()会自动创建新Session,对于静态资源请求完全没必要,建议修改为:

    HttpSession session = request.getSession(false);
    String email = session != null ? (String) session.getAttribute("email") : null;
    if (email == null) {
        request.getRequestDispatcher("/WEB-INF/view/login-page.jsp").forward(request, response);
        System.out.println(path + " попал в session == null");
    } else {
        System.out.println(path + " попал в session != null");
        filterChain.doFilter(request, response);
    }
    

    避免为静态资源请求创建不必要的Session。

验证方法

调整后重启应用,打开浏览器开发者工具的Network面板,查看图片请求的状态码是否为200,确认图片能正常加载。


内容的提问来源于stack exchange,提问作者Matvey Androsyuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:54:18