2014-12-06 4 views
0

내 neo4j 데이터베이스와 연결되는 jsp 파일이 있습니다. 또한 웹 페이지에서 쿼리를 인쇄 할 수 있습니다. 내 코드 :어떻게 jsp를 자바 스크립트에서 사용할 수 있습니까?

<%! 
public void test(JspWriter out) 
throws IOException 
{ 
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase("C:\\Users\\User\\Documents\\Neo4j\\default.graphdb"); 
ExecutionEngine engine = new ExecutionEngine(graphDb, StringLogger.SYSTEM); 

String query = "MATCH (name {name: 'Tom Hanks'}) RETURN name"; 
ExecutionResult result = engine.execute(query); 

out.println(result.dumpToString()); 

graphDb.shutdown(); 

} 
%> 
<html> 
<head><title>Test</title></head> 
<body> 
<input type="text" id="userInput"> 
<button onclick="zoek()">Zoek</button> 
<p id="demo"><% test(out); %></p> 
</body> 
</html> 

위의 코드는 정상적으로 작동합니다. 그것은 저에게 'Tom 행크스'에 대한 정보를 보여줍니다. 하지만 버튼을 클릭 할 때이 정보를 받고 싶습니다. 그래서 자바 스크립트를 사용했습니다 :

<script LANGUAGE="JavaScript"> 
    function zoek(){ 

    document.getElementById("demo").innerHTML = <% test(out); %>; 
    }  
</script> 

나는 이것이 효과가있을 것이라고 생각했지만 불행히도 그렇지 않습니다. 콘솔 로그에서 페이지가로드 될 때 다음 메시지가 나타납니다.

"잡히지 않은 SyntaxError : 예기치 않은 토큰 |"

그리고 내가 버튼을 클릭하면이

을 말한다는 :

난 당신이 나를 도울 수 있기를 바랍니다 "catch되지 않은 ReferenceError가이 zoek가 정의되어 있지 않습니다."

+0

JSP가 말하고있는 적절한 백엔드를 작성하고, JSP 내부 데이터베이스에 대한 연결을 열지 마십시오. 이는 확실히 파열됩니다. –

답변

0

JSP 컴파일은 클라이언트가 아닌 서버에서 수행되므로 JavaScript 파일에서 JSP 지정 문을 사용할 수 없습니다. JavaScript 파일은있는 그대로 제공됩니다.

JavaScript 파일에서 서버의 일부 컨텐츠 세트에 액세스해야하는 경우 JSP에 <script> 태그를 추가하고 "var myVar = <% test(out); %>;"을 선언하는 것이 "추악한"해결책이 될 수 있습니다. 그런 다음 myVar을 JavaScript 파일에 사용하십시오. 그러나 문서 및 JavaScript의로드 순서를 알고 있어야합니다.

<script>var myVar = <% test(out); %>;</script> 

나는이 방법을 추천 아니라 예 (http://api.jquery.com/jquery.getjson/)에 대한 jQuery를 사용하여 AJAX 호출을 통해 REST API를 통해 비동기 적으로 데이터를 얻을 수 없다.

0

스크립틀릿 대신 JSP 식을 사용해야합니다. 또한 메서드에 반환 유형의 String을 사용하십시오. 이 데모 코드를 사용해보십시오. 테스트를 위해 데이터베이스 코드에 대한 간단한 String을 대체했습니다.

<%! 
    public String test(){ 
     return "Tom Hanks is an actor"; 
    } 
%> 
<html> 
<head> 
<title>Test</title> 
<script type="text/javascript"> 
function zoek(){ 
    alert("test"); 
    document.getElementById("demo").innerHTML = "<%=test()%>"; 
} 
</script> 
</head> 
<body> 
<input type="text" id="userInput"> 
<button onClick="zoek()">Zoek</button> 
<p id="demo"></p> 
</body> 
</html> 
관련 문제