2011-09-11 35 views
1
protected void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException { 

    String filename = "/WEB-INF/TesteLOM2.rdf"; 
    ServletContext context = getServletContext(); 

    InputStream in = context.getResourceAsStream(filename); 
     if (in != null) { 
      Model model = ModelFactory.createMemModelMaker() 
        .createDefaultModel(); 
      model.read(in, null); 
      // null base URI, since model URIs are absolute 
      in.close(); 

    @SuppressWarnings("unchecked") 
    List<String> lista = (List<String>) request.getSession() 
     .getAttribute("sugestao"); 
    String palavrachave = null; 
    for (Iterator<String> iter = lista.iterator(); iter.hasNext();) { 

    palavrachave = iter.next(); 
    // Creates a query.... 
    String queryString = 

    // (SPARQL stuff here...} 

    Query query = QueryFactory.create(queryString); 

    // get the results... 

    QueryExecution qe = QueryExecutionFactory.create(query, model); 
    ResultSet results = qe.execSelect(); 
    request.setAttribute("results", results); 
    /* 
    * Compiler says error is in next line 
    * Got this exception: Cannot forward after response has been committed 
    * as I tried to forward results to a jsp page... 
    */ 

    request.getRequestDispatcher(VIEW).forward(request, response); 
    // ResultSetFormatter.out(System.out, results, query); 
    qe.close(); 

     } 

    } 
} 
+0

我得到了部分解決。我做了一些(明顯的)改動:QueryExecution qe = QueryExecutionFactory.create(query,model); \t \t \t \t ResultSet results = qe.execSelect(); \t \t \t \t request.getSession()。setAttribute(「results」,results); \t \t \t \t //request.setAttribute("results「,results); \t \t \t \t \t \t \t \t ResultSetFormatter.out(System.out的,結果,查詢); \t \t \t \t qe.close(); \t \t \t} \t \t \t request.getAttribute( 「結果」); \t \t \t request.getRequestDispatcher(VIEW).forward(request,response);但是我無法獲得在JSP中呈現的結果集。所以,仍然需要幫助...... – hjmnzs

回答

0

從Javadoc文檔HttpServletResponse它似乎要被調用response.getOutputStream()獲得實際的HTTP響應流寫入,而不是使用System.out

然後,你還可以嘗試使用是方法的不同過載,以便對結果格式有更多的控制,例如

ResultSetFormatter.output(response.getOutputStream(), results, ResultSetFormat.syntaxXML) 

希望這有助於

+0

謝謝羅維。當然它有幫助。在我看來,由於誤解了Jena ResultSetFomater的運作,出現了一些問題。它是一個迭代器,因此,當我從JSP調用它時,它的工作已經完成,所以我沒有結果。我得到了一個建議,以創建一個副本如果(我認爲它可以繞過這個,調用「getSession()。setAttribute(」results「,results)。但它不起作用。我必須執行一些代碼更改...看看會發生什麼... – hjmnzs