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

我有一个数据库flights_DB包含一个名为Passengers的表。 每位乘客都有自己的护照号码。

我想创build一个下拉列表,其中包含Passengers表中的所有护照号码。 我怎样才能实现这个使用JSP和Servlets?

假设你已经完成了模型和数据库部分(根据问题的评论),只需创build一个servlet类并相应地实现doGet()方法。 它比较简单,只需从数据库中检索乘客列表,并将其存储在请求范围内,并转发到应呈现它的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); } } 

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

 <%@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> 

(这个例子假定Passenger实体具有idname属性)

这基本上应该是这样。 只需通过像http://example.com/contextpath/passengers那样调用servlet的URL来打开页面。;

也可以看看:

  • doGet和doPost在Servlets中
  • 在JSP页面中使用MVC和DAO模式在HTML中显示JDBC ResultSet
  • 在JSP / Servlet中填充级联下拉列表