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

Servlet向JSP传递变量失败:${uname}始终为空

JSP中${uname}始终为空的原因排查

以下是针对你当前方案失效的核心排查点:

  • Servlet未正确匹配到目标Cookie

    • Cookie名称严格区分大小写,确认前端设置的Cookie名是uname而非Uname或其他变体;
    • 在Servlet中打印所有请求携带的Cookie,确认unameCookie确实存在:
      Cookie[] cookies = request.getCookies();
      if (cookies != null) {
          for (Cookie c : cookies) {
              System.out.println("Cookie: " + c.getName() + "=" + c.getValue());
          }
      }
      
    • 检查Cookie的path属性,确保其覆盖Servlet的访问路径,否则请求不会携带该Cookie。
  • request属性设置或转发逻辑错误

    • 确认Servlet中设置属性的代码正确:request.setAttribute("uname", cookie.getValue());,属性名uname不能写错;
    • 转发路径必须正确:若member.jsp在Web根目录,转发代码应为request.getRequestDispatcher("/member.jsp").forward(request, response);,路径开头的斜杠不能省略,否则会按Servlet相对路径查找页面,导致跳转到错误页面无法获取属性。
  • JSP的EL表达式支持问题

    • 若使用Tomcat 5.x及更早版本,需在JSP开头添加<%@ page isELIgnored="false" %>,否则EL表达式会被忽略,${uname}无法解析;
    • 注意:JSP中的${uname}是从request属性取值,而非直接读取Cookie——如果Servlet未找到Cookie,就不会设置该属性,此时${uname}自然为空,和JSP里<c:choose>判断Cookie是否存在的逻辑是两回事。
  • Servlet映射或部署问题

    • 确认Member Servlet的映射路径正确,比如你访问的URL是否匹配Servlet的web.xml配置或@WebServlet注解的路径;
    • 检查WEB-INF/classes下是否存在编译后的Member.class文件,若编译失败,Servlet无法执行,属性也就不会被设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:55:22