2

我知道我们可以从文本框或文本区域中检索文本,然后将数据插入到表格中。我们怎么能反其道而行之?也就是说,如何根据某些条件将所有数据从数据库中放回特定的文本字段或区域?


更新

我必须做一个小项目。它是一个人力资源信息系统项目。我必须能够根据他的 ID 更新员工的详细信息。到目前为止,我设计和设想的方式如下: 有一个 ID 下拉列表。我选择一个并使用表单处理程序单击确定。然后它转发到一个 servlet,该 servlet 显示我在添加员工时创建的表单。只是,这些文本字段不是空白,而是包含我在添加上述员工时插入的数据。那么,现在,我如何提取这些列值并将其放回文本字段中。我已经尝试将字段值设置为列属性名称,但显示的只是名称,而不是值。例如,当我设置 value=firstname(在我的数据库中指定)时,文本字段中的数据是“firstname” 而不是员工的名字实际上是什么。也许我走错了路。有人可以告诉我究竟如何检索这些值吗?

4

3 回答 3

1

使用 servlet 的doGet()方法对请求进行预处理(您应该在浏览器中调用该 servlet 的 URL)。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Employee employee = getItSomehow();
    request.setAttribute("employee", employee);
    request.getRequestDispatcher("/WEB-INF/edit.jsp").forward(request, response);
}

使用 JSP EL 将其显示在 HTML 输入字段的value属性中。

<input name="firstname" value="${employee.firstname}" />

然而,这为XSS 攻击打开了大门。使用 JSTLfn:escapeXml()来防止它。

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input name="firstname" value="${fn:escapeXml(employee.firstname)}" />

也可以看看:

于 2010-11-24T11:23:08.103 回答
0

看起来 BalusC 对此有一个很好的答案,但我想详细说明一下 getItSomehow() 方法。由于您没有指定您使用的数据库,我将给您一个示例,说明如果您使用的是 mysql。

【步骤一】:简单的google搜索一下就告诉你如何获取正确的jdbc

    try{
        Class.forName("com.mysql.jdbc.Driver");
    }
    catch (ClassNotFoundException e){
        throw new AssertionError(e);
    }

[步骤 2]:现在您将连接到数据库并准备好语句

        String url = "jdbc:mysql:///"+database_name;
        Connection con = DriverManager.getConnection(url);

        Statement stmnt = con.createStatement();

[步骤 3]:最后你将执行你的 select 语句

        ResultSet rs = stmnt.executeQuery(
             "SELECT "+ "values you want to retrieve separated by commas"
           +" FROM "+ "table name"
           +" WHERE "+ "condition eg. id=123";

现在您在 ResultSet 对象中有一组结果,您可以对其进行解析以获取您请求的数据。您可以使用以下内容:

        if(rs.next()){
               employee.setXXXX(rs.getString("XXXX"));
               employee.setYYYY(rs.getString("YYYY"));
         }
于 2010-12-16T16:03:08.940 回答
0

您可以通过这种方式在 JSP 中检索数据:

  1. 检索 bean 对象中的数据
  2. 在请求对象中设置 bean 对象
  3. 将您的请求发送到 JSP

遵循以下代码:

<%
    forumbean bean=(forumbean)request.getAttribute("userdata");
    String name=bean.getName();
    out.print("<input type='text' id='name' name='name' value='"+name+"'>");
%>

您也可以使用表达式语言来避免 scriplet 标记。

于 2011-06-19T13:13:52.583 回答