你几乎是对的.要从数据库获取下拉值,您应首先调用执行预处理作业的servlet,然后让servlet显示带有下拉列表的JSP.
由于正常的HTTP请求(单击链接,书签或在地址栏中输入URL)会根据GET请求的定义触发,因此您希望在doGet()方法中执行此任务.这是一个获取List< Product>的风格下拉值的示例.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List 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中,您可以按如下方式显示它:
${product.name}
将此servlet映射到/ products的URL模式,并在http://example.com/context/products之前调用它.它将从DB加载产品,将其存储在请求范围中,转发给JSP以使其呈现.
提交表单时,将调用映射到/ order的URL模式的servlet的doPost()方法.提交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);
}
也可以看看: