我正在使用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);
有什么想法吗?
答案 0 :(得分:2)
我不做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>
...
答案 1 :(得分:1)
此代码段将转到您的Servlet,或者您也可以使用单独的java类来实现它。
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();
while(rs.hasNext()){
QuerySolution binding = rs.nextSolution();
System.out.println(binding.get("ind"));
}
注意:
“ind”是您在SPARQL查询SELECT子句中引用的变量。
谢谢!