java - 在html(servlet/jsp)中打印jena结果集

标签 java jsp servlets jena

我正在使用 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/

相关文章:

java - 应用程序没有响应

java - 身份验证成功后过滤器不转发页面

javax.servlet.ServletException : bean [name] not found within scope

java - 使用java连接到vpn后面的http服务器

perl - 有时我从套接字中得到的不是我期望的

java - 为什么在 HttpServlet 中放置 response.addHeader 会导致失败

java - 如何判断Java应用发生young gc的原因

java - 如何在grails gform中呈现java.time.localdate

java - 适用于 Windows 的 RedHat openjdk 二进制文件可以在没有支持契约(Contract)的情况下用于生产吗?

java - 转发或重定向后表单参数为空