Java - 从Postgresql中检索数据,显示和编辑它们

时间:2014-01-26 17:27:45

标签: java jsp postgresql

也许是一个愚蠢/新手的问题,但我不知道如何继续:我正在实施一个网络电话簿,只有姓名,姓氏和电话号码作为输入。
目前,我能够在postgresql数据库上正确执行查询,其中jsp页面显示表中的数据。在同一页面中,我要显示一个页面链接/按钮/用于编辑其中一行的任何内容,但我不知道该怎么做;更详细的,我不知道如何选择我需要发送到编辑jsp页面的数据(例如)。
目前我的(不工作)解决方案是将数据显示到表单中(数据作为默认输入值),并且对于每一行,我显示一个单选按钮和一个提交按钮:我试图将数据设置为值单选按钮但是当我将其发送到编辑页面时,单选按钮上的request.getParameter失败(空指针)。
这里有一些代码:

search.jsp(这是我填写表格的方式)

<tr>
    <td><input type="text" name="name" value="<%=rs.getString("name")%>"></td>
    <td><input type="text" name="surname" value="<%=rs.getString("surname")%>"></td>
    <td><input type="text" name="phone" value="<%=rs.getString("phone")%>"></td>
    <td><input type="radio" name="radio" value="<%=rs.getString("name")%>; <%=rs.getString("surname")%>; <%=rs.getString("phone")%>"><input type="submit" name="name" value="Edit"></td>
</tr>

这就是我尝试获取无线电参数的方法:

    String radioInput = request.getParameter("radio");
    String[] tmp = radioInput.split("; ");
    String name=tmp[0];
    String surname=tmp[1];
    String phone=tmp[2];

我很确定用javascript可以做到这一点,但我对它并不擅长 我也很确定有更多的提余解决方案 我想知道是否有可能扫描(以某种方式)检查无线电的线路的值,将它们存储在上下文或任何可访问的地方。

非常感谢任何帮助,谢谢。

Marco Dalena

1 个答案:

答案 0 :(得分:0)

这是代码应该做的事情。表中的每个Person都应该有一个主键,它唯一地标识它。我们称之为id

第一页应该实现为ListPersons servlet。此servlet将使用查询从数据库中读取行,为每行创建Person实例,填充List<Person>,并将其存储在请求属性中。然后servlet应该将请求和响应(使用请求调度程序)转发到listPersons.jsp JSP。

然后,JSP应该使用JSTL迭代人员列表并在HTML表格行中显示每个人。

每一行都应包含人员编辑页面的链接。此链接的网址应如下所示

/myApp/editPerson?id=<theIDOfThePersonToEdit>

使用JSTL可以轻松生成这样的链接:

<a href="<c:url value='/editPerson'>
             <c:param name='id' value='${person.id}'/>
         </c:url>">Click here to edit the person</a>

您应该将第二个servlet映射到/editPerson。此servlet将从id请求参数获取要编辑的人员的ID,并将使用SQL查询来检索人员信息。它将使用此信息a创建Person的实例,并将其存储在请求属性中。然后它会发送到editPerson.jsp

然后,此JSP将生成一个表单,该表单预先填充了存储在request属性中的人员。此表单将包含一个隐藏字段,其中包含已编辑人员的ID。表单将发布到servlet(可能是相同的或另一个),这将验证信息,更新数据库行,以及重定向(使用response.sendRedirect()),例如{{1} servlet URL。

相关问题