我有一个托管 JSP 页面的服务器。我可以从客户的数据库中填充它的文本框吗?
问问题
2905 次
2 回答
1
创建一个加载数据、将其放入请求范围并将请求转发给 JSP 的 servlet 。如果您想在客户端打开链接/书签时执行此操作,请在doGet()
方法中执行此操作。或者当您想在客户端提交表单时执行此操作,然后在doPost()
方法中执行此操作。
这是一个根据请求参数从数据库中预加载特定产品的示例:
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 映射到 URL 模式,/product
然后您就可以通过http://example.com/somecontext/product?id=123调用它
在JSP中,您只需设置value
HTML 输入元素的属性以将其显示为输入元素的值。由于当您按照其他答案中的建议进行简单打印时,这对XSS 攻击很敏感,因此您希望使用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(那些<% %>
东西)是一种糟糕的做法,并且不提供对请求属性的即时访问(即<%= product.getName() %>
其他答案中建议的样式不起作用),也不提供标准的 XSS 转义工具。
于 2011-04-29T13:18:27.353 回答
0
我可以从客户的数据库中填充它的文本框吗?
是的你可以。
脚步:-
- 连接到 servlet 中的数据库。
- 在 servlet 中检索数据并将其传递给 jsp。
- 从 jsp 中的请求中获取该数据。
- 使用 scriptlet 或 jstl 在 jsp 中显示数据。
要在 jsp 的文本框中填充数据,请使用以下命令:
假设您有User
保存用户信息的对象,那么...
<input type="text" value="<%= user.getName()%>" />
于 2011-04-29T09:03:05.523 回答