본문 바로가기

IT/Jsp/Servlet

setContentType 메서드와 MIME타입


JSP 파일다운로드를 구현하며 이것저것 구글링해보다가 참고하면 좋은 내용이 있어 퍼왔다.


역시, setContentType 메서드가 데이터의 출력형태를 결정하는게 맞네.

다만 출력 전 '데이터파싱 -> 출력형태 파악' 단계를 먼저 거치는것같음.


출처는 웹마당 (바로가기 링크)


 [JSP setContentType 메소드와 MIME 타입]


 setContentType(String) : MIME 타입을 지정합니다. 캐릭터의 인코딩을 지정할 수도 있습니다.




예) response.setContentType("text/xml"); // MIME 타입만 지정
      response.setContentType("text/xml;charset=utf-8"); // MIME 타입 지정, 캐릭터의 인코딩 지정

 response 객체는 JSP의 실행 결과를 웹브라우저로 전송하고자 할때 사용하며 setContentType 메소드는 html의 표준 MIME 타입인

 "text/html" 의 변경이나 캐릭터의 인코딩을 재 지정하고자 할때 사용합니다.

 이거 써놓고도 뭔 말인지??? 쉽게 말해서 웹서버는 브라우저로 전송될 페이지가 html 인경우 text/html을 표준 MIME 타입으로 지정합니다. 그러나 필요에 의해서 이 MIME 타입을 변경하고자 할 경우나 또는 캐릭터의 인코딩셋을 변경하고자 할때 setContentType 메소드를 사용할 수 있습니다. 브라우져는 이 MIME 타입을 확인하고 어떤 파일의 스트림(stream)인 줄 알 수 있습니다.


MIME 타입들...

text/html
audio/mpeg
image/bmp
image/jpeg
application/pdf
application/java
application/jar
application/x-zip
application/msword
application/msaccess
application/vnd.ms-excel
application/vnd.ms-powerpoint
application/octet-stream


 위의 MIME 타입에서 맨 마지막에 굵게 표기되어 있는 octet-stream 이라는 놈은 이름 그대로 8비트 바이너리 배열을 의미하며 http나 이메일상에서 application 형식이 지정되지 않았거나 형식을 모를때 사용합니다. 결국 브라우저는 octet-stream 으로 MIME 타입이 지정된 경우 단지 바이너리 데이터로서 다운로드만 가능하게 처리하게 됩니다.


※ setContentType 메소드로 contentType을 지정해 놓고 출력 스트림을 바꾸는 것은 물건을 줬다 뺐는 행위입니다.

    즉 setContentType 메소드가 제일 먼저 호출되고 getOutputStream과 같은 출력 스트림 메소드가 사용되어져야 합니다