2010-06-06 42 views
3

我正在使用servlet來操縱本體。我得到了我的SPARQL查詢的結果,並且想要顯示(打印)導致JSP(Servlet)的結果。在html(servlet/jsp)中打印jena結果集

以下代碼段可用於在控制檯中打印結果。

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); 

任何想法?

回答

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子句闖民宅的變量。

謝謝!

+0

這和我的答案基本相同,只是你在錯誤的地方打印。通常的做法是將結果顯示在JSP文件(視圖)中,而不是在servlet(Controller)中顯示。您需要創建一個模型並將其傳遞給視圖,如我的答案中所述。 – BalusC 2010-06-07 17:36:24

2

我不做耶拿,但基本上你想遍歷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中,使用JSTLc:forEach遍歷List<RowObject>,打印HTML表格。

<table> 
    <c:forEach items="${results}" var="rowObject"> 
     <tr> 
      <td>${rowObject.someProperty}</td> 
      <td>${rowObject.anotherProperty}</td> 
      ... 
     </tr> 
    </c:forEach> 
</table> 

更新根據您的其他答案,這裏是你如何能基礎上,耶拿的ResultSet創建List<RowObject>

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> 
... 
+0

::這是不可能的創建名單並得到了錯誤數量。有沒有辦法做到這一點,除了JSTL.stuck在這裏..幫助我兄弟! 謝謝! – smartcode 2010-06-06 20:07:11

+0

錯誤告訴我們有關問題的原因。你不應該忽視它們,而是解釋它們並相應地解決問題。如果你不能解釋錯誤,請在這裏提問。 – BalusC 2010-06-06 20:26:37

+0

::嗨哥.. 我以我自己的方式得到了答案!非常感謝您的回覆和評論! – smartcode 2010-06-07 17:17:07