使用从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
实体具有id
和name
属性)
这基本上应该是这样。 只需通过像http://example.com/contextpath/passengers那样调用servlet的URL来打开页面。;
也可以看看:
- doGet和doPost在Servlets中
- 在JSP页面中使用MVC和DAO模式在HTML中显示JDBC ResultSet
- 在JSP / Servlet中填充级联下拉列表