这件事真让我困扰。如何从MySQL数据库中获取下拉列表,然后将其提交到JSP中的另一个表。我只知道如何使用html创建静态下拉列表,但我怎样才能使其动态化。我正在考虑一个链接到servlet的表单,servlet连接到数据库并从数据库表中获取字符串数组,然后将其发送到JSP以填充选项,并在提交选项时将其发送到然后将servlet插入数据库。有人请给我一些可以做到这一点的示例代码。最具体地说,我需要标记中使用的JSP代码和从servlet发送的代码。我真的用谷歌检查过,但没有明确的答案。希望我能在这里得到答案
答案 0 :(得分:0)
你几乎是对的。要从数据库获取下拉值,首先应该调用执行预处理作业的servlet,然后让servlet显示带有下拉列表的JSP。
由于正常的HTTP请求(单击链接,书签或在地址栏中输入URL)会根据GET请求的定义触发,因此您希望使用doGet()
方法执行此任务。这是一个获取List<Product>
的风格下拉值的示例。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Product> products = productService.list();
request.setAttribute("products", products); // It'll be available as ${products}.
request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
}
在/WEB-INF/products.jsp
中,您可以按如下方式显示:
<form action="order" method="post">
<select name="productId">
<c:forEach items="${products}" var="product">
<option value="${product.id}">${product.name}</option>
</c:forEach>
</select>
<input type="submit" value="Order" />
</form>
将此servlet映射到/products
的网址格式,并按http://example.com/context/products调用它。它将从DB加载产品,将其存储在请求范围内,转发给JSP以使其呈现。
提交表单时,将调用映射到doPost()
的URL模式的servlet的/order
方法。当您提交HTML表单时,每个输入元素的name=value
对将作为HTTP请求参数提供。因此,您可以按如下方式获取产品ID:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String productId = request.getParameter("productId");
// ... do your job here to insert the data.
request.getRequestDispatcher("/WEB-INF/someresult.jsp").forward(request, response);
}