2014-12-06 2 views
1

서블릿에서 js 코드로 데이터를 전달하는 가장 좋은 방법은 무엇입니까? 내 마음에 온 유일한 해결책은 JSON 문자열에 객체를 직렬화 한 다음 jsp 페이지에 요청 속성으로 전달한 다음 js 코드로 가져와 역 직렬화하는 것입니다.서블릿에서 클라이언트 측으로 객체 전달하기 (자바 스크립트)

더 좋은 방법이 있습니까?

+1

spring mvc를 사용하여 json을 브라우저에서 javascript 클라이언트로 반환하는 나머지 기반 서비스를 작성한 다음 브라우저를 사용하여 표시를 렌더링합니다. –

+0

날짜, RegExps 및 메서드를 원하면 JSON 대신 원시 JS를 배부 할 수 있습니다 ... – dandavis

답변

1

JSP 구문 내에서 <script> 태그로 JSON 객체를 생성 할 수 있으므로 요청 속성을 가져올 필요없이 브라우저가 페이지로드시 deserialize하는 인라인 자바 스크립트를 사용할 수 있습니다. 그것은 JSP 페이지 내에서 다음과 비슷한 것이 될 것입니다.

... 
<script> 
myJSONObj = {key1:value1,array1:[val1,val2,val3]}; 
//other javascript stuff... 
console.log(myJSONObj.key1); 
</script> 
... 

: -

... 
<script> 
<% 
out.println("myJSONObj = " + myJSONObject.toString()) 
%> 
//other javascript stuff... 
console.log(myJSONObj.key1); 
</script> 
... 

그래서 당신은 출력/같은 것 브라우저에 읽어 렌더링 (실제 JSON 객체는 직렬화 무엇에 의존 할 것이다 물론 당신의 JSONObject에 넣어) 또 다른 옵션은 AJAX를 사용하여 서블릿에서 JSON 문자열을 반환하고 JSON (jquery ajax를 사용하는 경우), 그렇지 않으면 xhr 응답에서 JSON.parse (...)를 반환 유형으로받는 것입니다.

+0

답변 주셔서 감사합니다.) 아약스가 서버에 비동기 호출을하는 데 사용되는 것으로 생각했습니다. 그리고 제 경우에는 정말 필요하지 않습니다. 내가 맞습니까? – StasKolodyuk

+0

JSP를 통해 객체를 직접 생성하면 이미 직렬화 된 객체가 포함 된 HTML과 JS가 생성됩니다. 페이지가로드되면 브라우저는 자동으로 JS에서 객체를로드합니다. 이 경로는 AJAX와 아무 관련이 없습니다. 질문이 광범위했기 때문에 AJAX 옵션을 추가했습니다. 옵션에 대한 개요를 원했습니다. AJAX는 서버에 비동기 호출을하기위한 것입니다. 동기식으로도 수행 할 수 있습니다. 기능을 추상화하고 특히 REST 아키텍처에서 JSON 문자열을 반환하는 특정 서블릿 인스턴스 (적절한 매개 변수 전달)를 사용하는 것이 좋습니다. –

+0

고맙습니다, 지금은 훨씬 더 분명합니다.) – StasKolodyuk

관련 문제