【问题标题】:Hyperlink to servlet到 servlet 的超链接
【发布时间】:2011-10-17 20:13:06
【问题描述】:

我有一个 Java 程序,它可以访问包含 ID, FirstName, LastName, Age 列的数据库。 (ID是主键,数据库中没有两个元素具有相同的ID)。

在我的程序的一部分中,Servlet 在 HTML 表格中显示数据库中的所有元素,除了它只显示 ID 和 FirstName 字段。我已将 ID 字段设置为超链接。到目前为止一切顺利。

但是,当用户单击 ID 超链接时,我希望将其转发到 Servlet,其中显示他们单击的特定元素的 ID, FirstName, LastName, and Age。所以,假设这是 HTML 显示的表格:

  • 第 1 行:[ID=1, FirstName=Jim],和
  • 第 2 行:[ID=2, FirstName=Joe]

数据库中的实际数据为:

  • 第 1 行:[ID=1, FirstName=Jim, LastName=Smith, Age=25],和
  • 第 2 行:[ID=2, FirstName=Joe, LastName=Chang, Age=37]

在显示表中,ID 字段是 Jim 和 Joe 的超链接。到目前为止,这一切都有效。

但是,当我实际单击一个时,它并没有做我想要的。假设我点击了 Joe 前面的超链接 2。然后我希望它显示数据库中的 2,Joe,Chang,37 岁,但我不知道该怎么做。

超链接所做的只是将请求转发到Servlet,其URL 模式为DisplayPerson.do,并尝试获取ID 参数,以便获取具有该ID 的元素并显示所有其他字段。

如果我可以获取 ID 参数,我知道如何显示所有字段 - 但我不知道在单击每个不同的超链接 ID 时如何设置或发送不同的 ID 参数,它们都只是转发到相同的 @987654332 @ 但这不知道请求是从哪一个发送过来的。

如果可能,我还想避免附加 URL,但如果这是唯一的方法,那么我可以这样做。有人可以解释如何做到(或者即使)吗?

【问题讨论】:

  • 阵型是开玩笑的吧?
  • 阵型是什么意思?如果您的意思是我格式化“表格”的方式,我只是指出它显示的信息 - 实际表格的格式很好
  • 对不起,我没有格式化原始帖子中的任何文本

标签: java html jsp servlets hyperlink


【解决方案1】:

两个选项:

  1. 将参数附加到 URL,但您不想这样做。

  2. 创建提交按钮,而不是链接,每个记录都有多个表单,您甚至可以为您的请求指定 POST。

【讨论】:

    【解决方案2】:

    如果您不想将参数附加到链接,另一种方法是为表格声明一个 html 表单(form.method=post 和 form.action=DisplayPerson.do)。假设您只想传递一个参数,在这种情况下为 personid

    1. 对于每一行,使链接调用一个javascript函数,将与该行关联的personId作为参数,例如postViewPerson('1'),其中参数'1'是动态生成的
    2. 有一个名为 clickedPersonid 的特殊隐藏输入
    3. js函数(例如postViewPerson)会将参数值赋给clickedPersonid并提交表单
    4. 隐藏的输入现在有一个值,servlet 可以通过 request.getParameter("clickedPersonid") 获取该值

    【讨论】:

      【解决方案3】:

      所以基本问题是.. 但是我不知道在单击每个不同的超链接 ID 时如何设置或发送不同的 ID 参数,它们都只是转发到同一个 Servlet 但这不知道请求是从哪个发送来的。 ..

      如何创建超链接?他们需要包含与特定记录关联的 id。所以超链接应该看起来像'http://yourservername/yourservletname?id=123'

      在第一步创建 URL 时,您需要在链接本身中嵌入 id 参数。 那应该可以正常工作。

      另一个提示是在浏览器中安装 firebug 并查看请求是如何发送的。

      【讨论】:

      • 有没有办法在不附加 url 的情况下做到这一点?
      • 另一个选项是h11deo在回复中描述的方式。如果不想在浏览器中显示id,可以使用ajax。
      【解决方案4】:

      看起来你的第一个响应已经有了你需要的所有东西,那么你为什么要向服务器发送另一个请求呢?除非您想在服务器上做一些全新的/不同的事情,否则更好的方法是使用客户端 javascript 在单击 URL 时显示您想要的内容。基本上,将所有内容作为(第一个)servlet 的响应发送回客户端,但首先要隐藏您不想显示的信息。形成 URL,使其具有附加到 javascript 函数的 onclick 事件。 java 脚本函数可以接受标识符或其他东西,然后在客户端上动态显示这些东西。

      【讨论】:

        猜你喜欢
        • 2010-12-26
        • 2011-10-28
        • 1970-01-01
        • 2022-12-17
        • 2018-07-02
        • 2012-07-20
        • 2012-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多