我需要在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>
它没有显示在表格中。
答案 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
。