将数据从数据库提取到Java中的文本字段或文本区域

时间:2010-11-23 07:32:35

标签: java servlets database-connectivity

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


更新

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

3 个答案:

答案 0 :(得分: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 attacks。使用JSTL fn:escapeXml()来阻止它。

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

另见:

答案 1 :(得分:0)

似乎BalusC有一个很好的答案,但我想详细说明一下getItSomehow()方法。由于您尚未指定正在使用的数据库,因此如果您使用的是mysql,我将为您提供一个示例。

[第1步]:一个简单的谷歌搜索会告诉你如何获得正确的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"));
         }

答案 2 :(得分:0)

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

  1. bean对象中的retreive数据
  2. 在请求对象中设置bean对象
  3. 将您的请求发送到JSP
  4. 请遵循以下代码:

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

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