繁体   English   中英

将数据从 HttpServlet 传递到 JSP 时出现问题

[英]Problem passing data from HttpServlet to JSP

我正在研究一个收集我想在 web 浏览器中显示的数据的项目。 该项目在 linux 操作系统上使用 java 和 JSP:

    Linux roe 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 GNU/Linux

我正在运行 Apache Tomcat 服务器 8.0.53 和 java jdk 1.8。

我找到了以下 web 页面,我在下面将其称为“Ref_1”:

[https://www.programmergate.com/pass-data-servlet-jsp]

'Ref_1' 很好地描述了如何将数据从 java HttpServlet controller 移动到 JSP 目标页面。 我的目标页面是文件'list.jsp'。

在 java controller 中,我遵循了“Ref_1”并添加了代码:

request.setAttribute("jja","jjaTest");                
request.getRequestDispatcher("list.jsp").forward(request, response);

当我在 eclipse 中运行此代码时,我可以验证请求 object 是否已将属性“jja”设置为“jjaTest”。

我的理解是,“请求”和“响应”对象作为隐式对象传递给 JSP,这些隐式对象可作为表达式语言 (EL) 变量使用,或者按名称将隐式对象称为“请求”或“响应”。

在文件“list.jsp”中,我添加了以下代码,正如“Ref_1”所建议的那样:

<body>
   <div>
       <p>Test is ${jja}</p>
       <p>Test attribute is <%= request.getAttribute("jja") %> </p>
   </div></body>

当 'list.jsp' 显示在浏览器中时,结果是:

测试是

测试属性为 null

在第一行 output 中,打印 EL 变量 ${jja} 没有显示任何内容。 我认为这意味着该值没有从 controller 成功传递。 或者,如果是,则它没有被正确读取。

在第二个 output 行中,request.getAttribute("jja") 打印一个“空”值。

显然,我做错了什么。 有人看到错误吗?

PS stackoverflow 向我推荐了一些类似的问题,我已经审查了这些问题,并计划再次审查。 其中一个问题非常相似,但没有解决方案。 所以,到目前为止,我还没有找到任何类似问题的解决方案。

您可能需要导航到 servlet 或 controller url 而不是直接导航到 jsp。

我创建了一个小应用程序来展示它是如何工作的。 https://github.com/Crydust/so66555347

请注意直接请求“http://localhost:8080/so66555347/list.jsp”如何无法显示该属性。 虽然“http://localhost:8080/so66555347/ListServlet”有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM