2010-06-06 3 views
3

Я использую сервлет для управления онтологией. Я получил результат моего запроса SPARQL, и я хочу отобразить (распечатать) результат JSP (Servlet).Печать набора результатов jena в html (servlet/jsp)

Следующий сегмент кода может использоваться для печати результата на консоли.

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 запроса ЗЕЬЕСТ.

Спасибо!

+0

Это в принципе то же самое, что и мой ответ, только вы печатаете его не в том месте. Обычная практика заключается в том, что вы показываете результаты в JSP-файле (View), а не в сервлете (контроллер). Вам необходимо создать модель и передать ее в представление, как указано в моем ответе. – BalusC

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, используйте 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> 

Update основанный на другом ответе, вот как вы можете создать 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> 
... 
+0

:: Не удалось создать Список и получить количество ошибок. Есть ли способ сделать это, кроме JSTL.stuck here..help me bro! Спасибо! – smartcode

+0

Ошибки сообщают о причинах проблемы. Вы не должны игнорировать их, но интерпретировать их и исправлять проблему соответствующим образом. Если вы не можете интерпретировать ошибки, задайте здесь вопрос. – BalusC

+0

:: Hey bro .. Я получил ответ, что по-своему! Большое спасибо за ваш ответ и комментарии! – smartcode