【问题标题】:Filling HTML <select> dropdown list in JSP with values fetched from database in Servlet使用从 Servlet 中的数据库获取的值填充 JSP 中的 HTML <select> 下拉列表
【发布时间】:2012-12-05 17:02:01
【问题描述】:

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

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

【问题讨论】:

  • 您想异步还是静态地创建下拉菜单?
  • Erm..这两者到底有什么区别?
  • 这个问题太宽泛了。你到底卡在哪一步?连接数据库?执行 SQL 查询?收集结果?从 servlet 内部调用类/方法?将结果传递给 JSP?调用 JSP 来呈现结果?在 JSP 中访问结果?在 JSP 中迭代结果?以 HTML 格式呈现结果?调用页面本身?在通话中调用 servlet?等等..等等。请先通过基础教程来掌握基本概念。
  • 我知道如何从 servlet 连接到数据库、执行查询、结果等。我只想知道如何在页面加载时将数据绑定到下拉列表。
  • 将鼠标放在您自己放置在问题上的[jsp] 和/或[servlets] 标签上方,直到出现黑色信息框,然后单击其中的信息 i> 链接。您最终会进入我们的标签 wiki 页面,其中包含一些很好的 Hello World 示例和几个指向合理学习资源的链接。

标签: jsp servlets drop-down-menu html-select


【解决方案1】:

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

@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 &lt;c:forEach&gt; 对其进行迭代,每次都打印一个新的HTML &lt;option&gt;

<%@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 来打开页面。

另见:

【讨论】:

  • 谢谢你的回答:)
猜你喜欢
  • 2016-02-22
  • 1970-01-01
  • 2012-09-19
  • 2011-12-22
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 2013-01-10
  • 2016-12-14
相关资源
最近更新 更多