填写HTML< select>在JSP中的下拉列表,其值从Servlet中的数据库中提取 [英] Filling HTML <select> dropdown list in JSP with values fetched from database in Servlet

查看:737
本文介绍了填写HTML< select>在JSP中的下拉列表,其值从Servlet中的数据库中提取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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

解决方案

假设您的模型和数据库部分已经完成对这个问题的评论),只需创建一个 servlet 类并实现 doGet()方法。它比较简单,只需从DB中检索乘客列表,将其存储在请求范围中,并转发给应该显示的JSP。以下示例假定您使用EJB / JPA作为服务/数据库层,但无论使用哪种服务/数据库层,最终都应该得到一个列表< Passenger>

  @WebServlet(/ passenger)
public class乘客扩展HttpServlet {

@EJB
私人PassengerService服务;

@Override
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {
列表&乘客> passenger = service.list();
request.setAttribute(乘客,乘客);
request.getRequestDispatcher(/ WEB-INF /engers.jsp)。forward(request,response);
}

}

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

 <% @taglib prefix =curi =http://java.sun.com/jsp/jstl/core%> 
...
< select name =passenger>
< c:forEach items =$ {passenger}var =passenger>
< option value =$ {passenger.id}>< c:out value =$ {passenger.name}/>< / option>
< / c:forEach>
< / select>

(此示例假定 Passenger 实体具有 id 名称属性)


$ b $基本上应该是这样。通过调用servlet的URL打开页面,如 http://example.com/contextpath/passengers



另请参见:




I have a database flights_DB containing a table called Passengers. Each passenger is uniquely identified by his passport number.

I would like to create a drop-down list containing all the passport numbers in the table Passengers. How can I achieve this using JSP and Servlets?

解决方案

Assuming that you've the model and DB part already finished (as per the comments on the question), just create a servlet class and implement the doGet() method accordingly. It's relatively simple, just retrieve the list of passengers from the DB, store it in request scope and forward to the JSP which should present it. The below example assumes that you're using EJB/JPA as service/DB layer, but whatever service/DB layer you use, you should ultimately end up getting a List<Passenger> from it anyway.

@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);
    }

}

Create a JSP file /WEB-INF/passengers.jsp which uses JSTL <c:forEach> to iterate over it, printing a new HTML <option> everytime:

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

(this example assumes the Passenger entity to have id and name properties)

That should basically be it. Just open the page by invoking the servlet's URL like so http://example.com/contextpath/passengers.

See also:

这篇关于填写HTML&lt; select&gt;在JSP中的下拉列表,其值从Servlet中的数据库中提取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆