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

zdz8207 阅读:41 2024-06-03 14:00:57 评论:0

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

我想创建一个下拉列表,其中包含 Passengers 表中的所有护照号码。如何使用 JSP 和 Servlet 实现这一点?

请您参考如下方法:

假设您已经完成了模型和数据库部分(根据问题的评论),只需创建一个 servlet类并实现 doGet()相应的方法。这相对简单,只需从数据库中检索乘客列表,将其存储在请求范围内,然后转发给应该呈现它的 JSP。下面的示例假设您使用 EJB/JPA 作为服务/DB 层,但是无论您使用什么服务/DB 层,您最终都应该得到 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 实体具有 idname 属性)

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

另见:


标签:Servlet
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号