【问题标题】:How can I send an object to a Servlet from a JSP via hyperlink?如何通过超链接将对象从 JSP 发送到 Servlet?
【发布时间】:2012-02-12 18:28:02
【问题描述】:

如何在单击超链接后将一个从 JSP 页面中的 bean 获取的对象发送到 Servlet??

类似...

...
<td align="center"><% if(j.getClubActual().isIsResource()){ request.setAttribute("equipo", j.getClubActual());%>
<a href="teamServlet" type="submit" target="_blank"><%= j.getClubActual().getNombre()%></a><%}%>
</td>
...

但是当我尝试在teamServlet中恢复它时,请求对象是空的。

提前致谢。

【问题讨论】:

    标签: java jsp jakarta-ee servlets


    【解决方案1】:

    您要发送什么对象?

    如果你想“发送”对象,我认为你最安全的选择是使用 HTTP 会话来做到这一点。您不能将带有超链接的“对象”(或 bean)发送到 servlet。您通常只能以字符串的形式发送参数值。

    【讨论】:

      【解决方案2】:

      一个 HTTP 请求的生命周期在其关联的 HTTP 响应完成发送数据时结束(阅读:由 JSP 生成的 HTML 页面)。单击链接将创建一个全新的 HTTP 请求,该请求根本不包含任何先前请求的属性。

      您需要将相关 Java 对象的唯一标识符作为请求参数发送。最终,HTML 必须基本上看起来像这样:

      <a href="teamServlet?clubId=123">link</a>
      

      在servlet中,可以通过如下方式获取请求参数:

      String clubId = request.getParameter("clubId");
      

      您可以使用此值从某个数据存储重新获取与给定 ID 关联的 Java 对象。

      Club club = clubService.find(Long.valueOf(clubId));
      // ...
      

      【讨论】:

      • 但是将对象作为请求参数发送,您正在从 Servlet 调用 doGet 但是如果您想使用 Post 方法来隐藏参数,我该怎么做呢?
      • 使用 &lt;form method="post"&gt;&lt;input type="hidden"&gt;&lt;input type="submit"&gt; 代替。请记住,这会破坏搜索机器人的可抓取性和最终用户的书签性。
      • 抱歉,这会破坏搜索机器人和书签的可抓取性是什么意思?我现在正在学习 Jave EE,而且我是新手...
      • POST 请求不会被 Google 等搜索机器人索引(因此,如果它例如指向某个产品详细信息页面,则不会出现在任何搜索结果中),最终用户也无法添加书签生成的 URL,以便重现完全相同的请求。
      • 用正确的内容设置
        后,我怎样才能改变提交按钮的外观,以便看起来像一个超链接?有什么办法吗?
      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2013-03-28
      • 2017-07-27
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多