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

从Java方法传值到JSP页面遇问题:Countrow返回null求帮助

问题排查与解决:Java变量传递到JSP后获取为null

核心错误:属性获取方式不匹配

你在Java代码中通过request.setAttribute("Countrow", Countrow)将值存入请求域属性,但JSP里却用request.getParameter("Countrow")尝试获取——这两个方法的作用完全不同:

  • setAttribute/getAttribute:用于在服务器内部的请求域中传递数据,仅适用于请求转发场景。
  • getParameter:用于获取HTTP请求的外部参数(如表单提交、URL拼接的参数),和请求域属性无关。

修正后的JSP代码

将JSP中的获取方式改为getAttribute,并进行类型转换:

<% 
    String val = (String) request.getAttribute("Countrow");
    out.println("Total test reviewed : " + val);
%>

额外排查点:请求跳转方式是否正确

如果Java代码所在的Servlet使用response.sendRedirect("xxx.jsp")重定向到JSP,请求域中的属性会直接丢失——因为重定向是客户端发起新请求,原request对象已销毁。

  • 若为服务器内部跳转,改用请求转发:
    request.getRequestDispatcher("目标页面.jsp").forward(request, response);
    
  • 若需要跨请求传递数据,改用session存储:
    // Java代码中存储
    session.setAttribute("Countrow", Countrow);
    // JSP中获取
    String val = (String) session.getAttribute("Countrow");
    

结果集处理优化(非null原因,但建议调整)

COUNT(*)查询只会返回一行结果,无需使用while循环,改为if判断即可:

String strQuery = "SELECT COUNT(*) FROM public.acsis_lab_test_results where reviewed = true";
ResultSet rs = st.executeQuery(strQuery);

String countrow = "";
if (rs.next()) {
    countrow = rs.getString(1);
    System.out.println("Total test reviewed : " + countrow);
    request.setAttribute("Countrow", countrow);
}
// 务必关闭资源,避免内存泄漏
rs.close();
st.close();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:54:26