使用从Servlet中的数据库获取的值填充JSP中的HTML <select>下拉列表

Mat*_*hew 3 jsp html-select servlets drop-down-menu

我有一个flights_DB包含一个名为的表的数据库Passengers.每位乘客都由他的护照号码唯一标识.

我想创建一个包含表格中所有护照号码的下拉列表Passengers.如何使用JSP和Servlets实现这一目标?

Bal*_*usC 10

假设您已经完成了模型和数据库部分(根据问题的注释),只需创建一个servlet类并相应地实现该doGet()方法.它相对简单,只需从DB中检索乘客列表,将其存储在请求范围内并转发给应该呈现它的JSP.下面的示例假设您使用EJB/JPA作为服务/数据库层,但无论您使用哪种服务/数据库层,最终都应该最终得到List<Passenger>它.

@WebServlet("/passengers")
public class Passengers extends HttpServlet {

    @EJB
    private PassengerService service;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Passenger> passengers = service.list();
        request.setAttribute("passengers", passengers);
        request.getRequestDispatcher("/WEB-INF/passengers.jsp").forward(request, response);
    }

}
Run Code Online (Sandbox Code Playgroud)

创建一个JSP文件/WEB-INF/passengers.jsp,使用JSTL <c:forEach>迭代它,<option>每次都打印一个新的HTML :

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<select name="passenger">
    <c:forEach items="${passengers}" var="passenger">
        <option value="${passenger.id}"><c:out value="${passenger.name}" /></option>
    </c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)

(此示例假定Passenger实体具有idname属性)

基本上应该是它.只需通过调用servlet的URL来打开页面,如http://example.com/contextpath/passengers.

也可以看看: