Просто поместите его в файл JSP и замените все, что должно быть динамически сгенерировано с помощью taglibs и EL. Вы можете использовать JSP в качестве шаблона для отображения HTML (и CSS / JS) обычным способом. Вы можете использовать EL для доступа к «внутренним» данным (все, что помещено как атрибут в область действия page
, request
, session
или application
), и вы можете использовать taglibs для управления потоком страниц динамически.
Как сказал Божо, вы можете использовать JSTL (просто перетащите jstl-1.2.jar в /WEB-INF/lib
веб-приложения) c:forEach
для перебора коллекция Javabeans. Вы можете использовать EL для доступа к свойствам Javabean. Вы можете создать Javabean, который представляет Order
(а также Customer
и Item
):
public class Order {
private Long id;
private Date timestamp;
private Customer customer;
private List<Item> items;
// Add/generate public getters and setters.
}
Вы можете использовать Servlet
, чтобы получить Order
из базы данных и перенаправить запрос в файл JSP для отображения. Э.Г.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long orderId = Long.valueOf(request.getParameter("orderId"));
Order order = orderDAO.find(orderId);
request.setAttribute("order", order);
request.getRequestDispatcher("/WEB-INF/report.jsp").forward(request, response);
}
Отобразите это Servlet
в web.xml
с помощью url-pattern
, чтобы вы могли вызывать его с помощью формы POST
или, возможно, просто с помощью ссылки GET
(затем замените doPost()
на doGet()
). Вы видите, что Servlet
помещает найденный order
в область запроса (чтобы он был доступен в EL с помощью ${order}
) и перенаправляет запрос в JSP для отображения. Вы также видите, что JSP помещен в /WEB-INF
для предотвращения прямого доступа к странице (например, путем ввода URL-адреса JSP в адресной строке браузера).
В отчете вы можете получить доступ к Order
следующим образом:
<h1>Order header</h1>
<table>
<tr><th>Order ID:</th><td>${order.id}</td></tr>
<tr><th>Order timestamp:</th><td><fmt:formatDate value="${order.timestamp}" dateStyle="long" /></td></tr>
<tr><th>Customer name:</th><td>${order.customer.name}</td></tr>
<tr><th>Customer address:</th><td>${order.customer.address}</td></tr>
</table>
<h2>Order details</h2>
<table>
<tr>
<th>Name</th>
<th>Description</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<c:forEach items="${order.items}" var="item">
<tr>
<td>${item.name}</td>
<td>${item.description}</td>
<td>${item.quantity}</td>
<td><fmt:formatNumber value="${item.price}" type="currency" currencySymbol="€" /></td>
</tr>
</c:forEach>
</table>
Обратите внимание, что выше, это только основной пример. Вам, конечно, нужно использовать ваш HTML-шаблон.