【问题标题】:Problem passing data from HttpServlet to JSP将数据从 HttpServlet 传递到 JSP 的问题
【发布时间】:2021-03-09 21:55:23
【问题描述】:

我正在开展一个收集我想要显示的数据的项目 在网络浏览器中。该项目在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。

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

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

'Ref_1' 很好地描述了如何从 java 中移动数据 HttpServlet 控制器到一个 JSP 目标页面。我的目标页面是 文件“list.jsp”。

在java控制器中,我跟着'Ref_1'添加了代码:

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

当我在 eclipse 中运行这段代码时,我可以验证请求 对象被设置为属性“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'在浏览器中显示时,结果是:

测试是

测试属性为空

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

在第二个输出行中,request.getAttribute("jja") 打印一个 'null' 值。

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

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

【问题讨论】:

    标签: java jsp getattribute


    【解决方案1】:

    您可能需要导航到 servlet 或控制器 url,而不是直接导航到 jsp。

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

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

    【讨论】:

    • 目前,我的控制器使用上面的请求调度程序转发语句转发到 JSP。我不知道导航到“list.jsp”的另一种方法。最终,此文件是目标文件,因为这是应用程序显示结果列表的位置。
    • 所以......在您的网络浏览器中,您正在浏览“localhost/website/MyServlet”。然后在内部设置请求的属性并分派给 jsp。不通过 servlet 直接浏览“localhost/website/list.jsp”?对吗?
    猜你喜欢
    • 2011-10-08
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多