[英]html report in jsp
我的客户给了我一个用于计费的HTML模板,我必须在我正在进行的JSP / Servlet项目中加入。 它是一个原始HTML文件,输出应与分页符完全相同,依此类推。 它有一个标题表和一个详细信息表,就像我们的普通发票一样。 知道如何在Servlet / JSP中显示报告中的细节吗?
只需将其放在JSP文件中,并替换需要由taglibs和EL动态生成的所有内容。 您可以使用JSP作为模板以通常的方式显示HTML(和CSS / JS)。 您可以使用EL访问“后端”数据(在page
, request
, session
或application
范围中作为属性放置的所有内容),您可以使用taglibs动态控制页面流。
正如Bozho所说,你可以使用JSTL (只需在webapp的/WEB-INF/lib
删除jstl-1.2.jar ) c:forEach
迭代一组Javabeans。 您可以使用EL访问Javabean属性。 您可以创建表示Order
(以及Customer
和Item
)的Javabean:
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);
}
通过url-pattern
将此Servlet
映射到web.xml
,以便您可以通过POST
表单调用它,也可以只通过GET
链接调用它doGet()
然后用doGet()
替换doPost()
)。 您会看到Servlet
将找到的order
放在请求范围内(以便可以通过${order}
在EL中访问它)并将请求转发给JSP进行显示。 您还看到JSP被放置在/WEB-INF
以防止页面被直接访问(例如,通过在浏览器地址栏中输入JSP的URL)。
在报告中,您可以像这样访问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模板。
复制粘贴大部分内容。 然后编辑它,以便表的每一行( <tr>
)必须包含数据中的一行,因此使用:
<table>
<c:forEach items="#{yourData} var="#{row}">
<tr>
<td>#{row.datum1}</td>
<td>#{row.datum2}</td>
</tr>
</c:forEach>
</table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.