본문 바로가기

Troubleshooting

response.getWriter() 와 response.flush() 의 관계

 

오늘은 자바에서 발생한 문제에 대해서 이야기 하고자 한다.

XML을 스트림해서 response 하기위해  response.getWriter() 를 사용했다.

requestPro 는 인터넷에서 쉽게 찾을수있는 가장 기본적인 MVC 패턴으로 구현된 것으로

Iterator 패턴과 RequestDispatcher  를 컨트롤단에 정의해서 구현한 메서드이다.

그런데 이 패턴으로 인해 문제가 발생했다.

Cannot forward after response has been committed .

응답이 커밋한후 전달(forward) 할수 없다 라는 메세지 인데

해당 exception 에대해서 구글링 해본결과. response.sendRedirect(""); 를 사용하면 해결된다는 글을 발견하고 컨트롤러 쪽 JAVA 파일을

수정해봤지만 해결을 할수없었다.

그래서 이번엔 스택오버 플로우를 찾아봤다.

해당 패턴은  Iterator 패턴과 RequestDispatcher  를 컨트롤단에 정의해서

dispatcher.forward 를 사용하기전에 response.getWriter() 에 대한 flush() 가 되는 형식이란걸 알게되었다.

XML 스트림방식을 꼭 쓰지않아도 될것같아서,  response.getWriter() 부분을 StringWriter() 로 변환하고

String 형태로 문제를 해결하는 방식으로 종결했다.

원인을 알게되었으니 앞으로 이와같은 상황이 왔을때 해결의 실마리를 찾은샘이다.

 

'Troubleshooting' 카테고리의 다른 글

JasperException 해결방법  (0) 2015.11.21