使用来自客户端的内容填充JSP页面

时间:2011-04-29 08:59:09

标签: database jsp auto-populate

我有一个托管JSP页面的服务器。我可以从客户的数据库中填充它的文本框吗?

2 个答案:

答案 0 :(得分:1)

创建一个servlet,它加载数据,将其放入请求范围并将请求转发给JSP。如果您想在客户端打开链接/书签时执行此操作,请使用doGet()方法执行此操作。或者当您希望在客户端提交表单时执行此操作,然后在doPost()方法中执行此操作。

以下是根据请求参数从DB预加载特定产品的示例:

Product product = productService.find(request.getParameter("id")); // Do your DB access job.
request.setAttribute("product", product); // It'll be available by ${product}.
request.getRequestDispatcher("/WEB-INF/product.jsp").forward(request, response); // Let JSP display it.

将此servlet映射到/product的网址格式,然后您就可以通过http://example.com/somecontext/product?id=123

来调用它

JSP中,您只需设置HTML input元素的value属性即可将其显示为input元素的值。由于这对于XSS attacks非常敏感,因此当您按照其他答案中的建议进行打印时,您希望使用JSTL fn:escapeXml()来避免XSS攻击。

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

请注意, scriptlet (那些<% %>件事物)是poor practice,并且不提供对请求属性的即时访问(即<%= product.getName() %>样式,如其他答案不起作用),也没有提供标准的XSS逃逸设施。

答案 1 :(得分:0)

  

我可以从我的文本框填充它   客户的数据库?

是的,你可以。

步骤: -

  1. 连接到servlet中的数据库。
  2. 在servlet中检索数据并将其传递给jsp。
  3. 从jsp。
  4. 中获取请求中的数据
  5. 使用scriptlet或jstl在jsp中显示数据。

  6. 在jsp的文本框中填充数据使用以下内容:

    假设您拥有User对象,其中包含用户的信息......

    <input type="text" value="<%= user.getName()%>" />