2011-10-25 4 views
2

이 글에서는 link입니다 : 리포트에 대한 HTML 생성 요청을 처리하고 HTML을 응답 오브젝트에 직접 작성합니다. 이제 내 코드에서, 내가 가진 :서블릿 응답에 프린트 라이팅 사용하기

PrintWriter out = response.getWriter(); 
crystalReportViewer.processHttpRequest(request, response, context,null); 

내가 제대로 이해하면 processHttpRequest 자체가 response.getWriter().print(.....).

같은 그래서 코드가 PrintWriter의 두 인스턴스를 생성한다 할 것인가?

답변

3

응답 개체는 매번 동일한 작성자를 반환합니다. 당신은 상호 교환이 작가를 사용할 수 있습니다

final PrintWriter writerA = response.getWriter(); 
final PrintWriter writerB = response.getWriter(); 
writerA.println("A1"); 
writerB.println("B1"); 
writerA.println("A2"); 
writerB.println("B2"); 

출력은 writerAwriterB 실제로 PrintWriter의 동일한 인스턴스에 연결되어있어 예상대로입니다.

내가이 사양에 같은 언급되어 있는지 모르겠 Javadoc는 말한다 :

이 방법 또는로 getOutputStream 하나() 몸 둘을 작성하는 호출 할 수 있습니다.

코드는 두 가지 이유에서 안전하지 않습니다 말했다되고 그건 :

  • crystalReportViewer 먼저 뭔가를 인쇄 한 후 response을 통과하면

  • 위에 인용 계약을 나누기 response.getOutputStream()를 호출 할 수 있습니다 crystalReportViewer에 출력하면 crystalReportViewer 출력이 앞에 추가되므로 출력이 끊어집니다.