我正在使用 servlet 来处理本体。我得到了 SPARQL 查询的结果,我想在 JSP (Servlet) 中显示(打印)结果。
以下代码段可用于在控制台打印结果。
com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(query,model);
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect();
ResultSetFormatter.out(System.out, rs);
有什么想法吗?
最佳答案
我不做 Jena,但基本上你想遍历 com.hp.hpl.jena.query.ResultSet
并将信息映射到 List<RowObject>
其中 RowObject
是您自己的模型类,代表您要在 HTML 表格中显示的单行。映射后,把List<RowObject>
在请求范围内并将请求转发给 JSP。
List<RowObject> results = getItSomeHow();
request.setAttribute("results", results); // Will be available as ${results} in JSP
request.getRequestDispatcher("page.jsp").forward(request, response);
然后在 JSP 中,使用 JSTL c:forEach
遍历 List<RowObject>
, 打印一个 HTML 表格。
<table>
<c:forEach items="${results}" var="rowObject">
<tr>
<td>${rowObject.someProperty}</td>
<td>${rowObject.anotherProperty}</td>
...
</tr>
</c:forEach>
</table>
更新 根据您的其他答案,这里是您可以创建 List<RowObject>
的方法基于耶拿的 ResultSet
:
List<RowObject> results = new ArrayList<RowObject>();
while (rs.hasNext()) {
RowObject result = new RowObject();
QuerySolution binding = result.nextSolution();
result.setInd(binding.get("ind"));
result.setSomethingElse(binding.get("something_else"));
// ...
results.add(result);
}
并显示如下:
...
<td>${rowObject.ind}</td>
<td>${rowObject.somethingElse}</td>
...
关于java - 在html(servlet/jsp)中打印jena结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2985233/