我有一个数据库flights_DB
,其中包含一个名为Passengers
的表。每位乘客都有他的护照号码唯一标识。
我想创建一个下拉列表,其中包含表Passengers
中的所有护照号码。如何使用JSP和Servlets实现此目的?
答案 0 :(得分:10)
假设您已完成模型和数据库部分(根据问题的评论),只需创建一个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);
}
}
创建JSP文件/WEB-INF/passengers.jsp
,使用JSTL <c:forEach>
进行迭代,每次都打印一个新的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
属性)
基本上应该是它。只需通过调用servlet的URL来打开页面,如http://example.com/contextpath/passengers。