我知道我们可以从文本框或文本区域检索文本,然后将数据插入表格中。我们怎么能这样做呢?也就是说,如何根据某些条件将所有数据放回数据库中的特定文本字段或区域?
更新:
我必须做一个迷你项目。它是人力资源信息系统项目。我必须能够根据他的ID更新员工的详细信息。到目前为止我设计和设想它的方式如下:有一个ID的下拉列表。我选择一个并使用表单处理程序单击“确定”。然后它转发到一个servlet,显示我在添加员工时所做的表单。这些文本字段仅包含我在添加上述员工时插入的数据,而不是空白。那么,现在,如何提取这些列值并将其重新放回文本字段中。我已经尝试将字段值设置为列属性名称,但所有显示的都是名称,而不是值。例如,当我设置value = firstname(在我的数据库中指定)时,textfield中的数据是“firstname”而不是员工的名字实际上是什么。也许我会以错误的方式去做。有人可以告诉我具体如何检索这些值吗?
答案 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中检索数据:
请遵循以下代码:
<%
forumbean bean=(forumbean)request.getAttribute("userdata");
String name=bean.getName();
out.print("<input type='text' id='name' name='name' value='"+name+"'>");
%>
您也可以使用表达式语言来避免scriplet标记。