2010-06-06 4 views
3

저는 온톨로지 조작을 위해 서블릿을 사용하고 있습니다. 내 SPARQL 쿼리의 결과를 얻었고 그 결과를 JSP (Servlet)에 표시 (인쇄)하려고합니다.jena 결과 세트를 html로 인쇄하십시오 (서블릿/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

이 코드 세그먼트는 서블릿 또는 별도의 자바 클래스를 사용하여 구현할 수도 있습니다.

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

참고 :

"공업"는 SPARQL 쿼리 SELECT 절에 다스 려하는 변수입니다.

감사합니다.

+0

이것은 내 대답과 근본적으로 동일하며 잘못된 위치에서만 인쇄합니다. 정상적인 방법은 서블릿 (컨트롤러)이 아닌 JSP 파일 (보기)에 결과를 표시하는 것입니다. 내 대답에 설명 된대로 모델을 만들어보기에 전달해야합니다. – BalusC

2

나는 예나하지 않지만, RowObject 당신은 HTML 테이블에 표시 할 단일 행을 나타냅니다 자신의 모델 클래스이다 기본적으로 당신이 List<RowObject>에 정보를 com.hp.hpl.jena.query.ResultSet 반복 및지도 싶습니다 . 매핑 후에 요청 범위에 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는 HTML 테이블을 인쇄 할 때 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); 
} 

그리고 다음과 같이 표시 :

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

다른 답변에 따라

업데이트, 여기 당신이 예나의 ResultSet에 따라 List<RowObject>를 만들 수있는 방법

... 
<td>${rowObject.ind}</td> 
<td>${rowObject.somethingElse}</td> 
... 
+0

은 : 그것은 목록 를 생성하기위한 불가능하며 JSTL.stuck 제외 나 브로 here..help 것을하고 거기 어떤 방법을 errors.Is 수있어! 감사합니다. – smartcode

+0

오류는 문제의 원인을 알려줍니다. 당신은 그들을 무시해서는 안되지만 해석하고 그에 따라 문제를 해결하십시오. 오류를 해석 할 수 없다면 여기에서 질문하십시오. – BalusC

+0

:: 안녕하세요 .. 내 자신의 방식으로 답변을 얻었습니다! 답장과 의견을 보내 주셔서 대단히 감사합니다! – smartcode

관련 문제