如何在JSP中通过EJB显示数据库表中的数据?

时间:2013-01-15 16:07:45

标签: java jsp ejb

我需要在JSP中显示数据库表。

我有一个会话bean,其中包含一个显示数据库中所有数据的方法。

如何在JSP中使用它?

代码(来自下面的评论):

@Override public List findAll() { 
   String flightQuery = "SELECT f FROM Flights f"; 
   Query q = em.createQuery(flightQuery); 
   List existing = q.getResultList(); 

   if (existing.isEmpty()) { 
       System.out.println("Invalid");
   }
   return existing; 
}

JSP代码

<c:forEach items="${flights}" var="flight"> 
   <tr> 
   <td>${flight.flightid}</td> 
   <td><c:out value="${flight.flightnumber}" /></td> 
   <td><c:out value="${flight.datetime}" /></td> 
   <td><c:out value = "${flight.seatsleft}"</td> 
   <td><c:out value="${flight.id}" /></td> 
   <td><c:out value="${flight.price}" /></td> 
   <td><c:out value="${flight.originairport}" /></td> 
   <td><c:out value="${flight.destinationairport}" /></td>
   </tr>
</c:forEach> 
</table> 

它没有显示在表格中。

1 个答案:

答案 0 :(得分:3)

使用控制器servlet。在our servlets wiki page中,在“Hello World#2(预处理请求)”部分的大约一半的页面中已经演示了执行所需作业的基本示例。您可以使用@EJB注释直接在servlet中注入EJB。

以下是相关摘录:

@WebServlet("/products")
public class ProductServlet extends HttpServlet {

    @EJB
    private ProductService productService;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Product> products = productService.list();
        request.setAttribute("products", products);
        request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
    }

}

然后在JSP中:

<c:forEach items="${products}" var="product">
    <tr>
        <td>${product.id}</td>
        <td><c:out value="${product.name}" /></td>
        <td><c:out value="${product.description}" /></td>
        <td><fmt:formatNumber value="${product.price}" type="currency" /></td>
    </tr>
</c:forEach>

最后,只需通过其URL调用servlet:http://localhost:8080/context/products