2012-12-09 7 views
0

서블릿에서 JSON 객체를 가져와 역 직렬화하는 응용 프로그램을 만들고 그 변수를 사용하여 다른 일을하고 싶습니다.서블릿 Java에서 JSON 객체 가져 오기

내 서블릿의 doPost에 다음 코드를했다 : 이제

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     ObjectOutputStream os; 
     os = new ObjectOutputStream(response.getOutputStream()); 

     String s = new String("A String"); 

     Gson gson = new Gson(); 
     String gsonObject= gson.toJson(s); 

     os.writeObject(gsonObject); 
     os.close(); 

    } 

, 서블릿이 실행되는 동안 나는의 doGet 방법에서 동일한 코드를 게시 할 경우, 나는, 브라우저를 통해 액세스 할 수 있습니다, 즉 다운로드 할 것 내가 원하지 않는 서블릿 파일.

두 번째 응용 프로그램에서 서블릿에 연결할 객체를 가져 와서 나중에 조작 할 수 있도록해야합니까?

미리 감사드립니다.

+0

두 번째 신청서는 무엇입니까? html 페이지를 렌더링하거나 Java 코드를 읽고 처리 하시겠습니까? – vels4j

답변

0

을 유의하시기 바랍니다 사용해야합니다 서블릿 :

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    String s = new String("A String"); 
String json = new Gson().toJson(s); 
this.response.setContentType("application/json"); 
this.response.setCharacterEncoding("UTF-8"); 
Writer writer = null; 
try { 
     writer = this.response.getWriter(); 
     writer.write(json); 
} finally { 
    try { 
     writer.close(); 
    } 
    catch (IOException ex) { 
    } 
} 
} 
+0

대단히 고마워, 내 문제를 완전히 해결하지 못했지만, 많은 도움이되었고 실제로 작동하게 만들었습니다. – ChrisA

0

서블릿 파일을 브라우저에 표시하지 않고 다운로드하는 경우 응답에 콘텐츠 유형을 설정하지 않은 것일 수 있습니다. 서블릿의 응답으로 JSON 문자열을 작성하는 경우, 당신은

response.setContentType("text/html"); 
response.getWriter().write(json); 

당신은에 몇 가지 변경을 필요로하기 위해, 자사의 "text/html과"가 아니라 "HTML/텍스트"

0

IFI는이 서블릿에 대한 연결을 만들려면 java.net.HttpURLConnectionjava.net.URL 객체를 사용하고 두 번째 서블릿 위의 JSON 서블릿에 의해 스트리밍 json으로 읽을 수 정확하게 질문을 이해했다.