본문 바로가기

JSP

1.Jsp 페이지에서 다운로드 구현할때 주의 할점.

반응형

일반적으로 화면은 JSP에 구현하고 기능은 JAVA 파일에 구현한다.


하지만 종종 JSP에 자바코드를 입력하여 구현하는 경우가 있다.


만약 이때 다운로드 로직을 구현한다면 주의 할점.


out.clear();

out = pageContext.pushBody();


write 전에 위와같은 로직을 추가 해줘야 하는데.....(일단 메소드로 구현해서 input으로 넣어 줘야합니다.)


만약 위와같은 로직이 추가 되지 않으면 다운로드에 영향을 미칠수도 있습니다. 그리고 


Servlet.service() for servlet jsp threw exception

java.lang.IllegalStateException: getOutputStream() has already been called for this response


위와 같은 에러 메세지를 받게 될것입니다. 


이유는


jsp에서 다른 jsp 에 있는 페이지를 호출해서 다운로드 로직을 실행하는 경우 


이미 스트림이 열려 있는 상태 입니다. 따라서 추가적으로 스트림을 열려고 하면 위와 같은 에러 메세지를 생성하는 것입니다. 


그렇다면 추가적으로 스트림을 열지 않으려면 기존에 있는 스트림을 이용해야 겠죠!


그래서 사용하기 전에 스트림을 한번 비우고 깔끔하게 전송을 해야 겠죠


out.clear(); -> 실행하면 스트림을 깔끔하게 비운다.


그럼 통로는 비웠으니 그 통로를 지나갈 탈것이 필요하겠죠!


out = pageContext.pushBody(); -> jsp 페이지에 대한 정보를 저장하는 기능을 한다.


여기서 말하는 jsp 페이지에 대한 정보라면 다운로드를 말하는 거겠죠!


따라서 저 두줄로 페이지의 정보를 보내는 부분을 초기화 하는 작업을 한다고 생각하면 됩니다.


끝!



반응형

'JSP' 카테고리의 다른 글

1. 아파치 poi 사용할때 주의 할점  (1) 2019.02.02