차근차근/JAVA JSP

Response 객체를 이용한 파일 전송

예쁜꽃이피었으면 2014. 7. 26. 01:38

http://www.silverwolf.co.kr/9926

클라이언트에 JAR 파일을 전송한다면 Response 객체에 HTML 페이지가 아니라 JAR 바이트를 내려보내야 합니다. 먼저 JAR 파일을 바이트로 읽어 이를 Response의 출력 스트림에 기록해야 합니다.

 

 

01.// import 구문
02.public class CodeReturn extends HttpServlet {
03.public void doGet(HttpServletRequest request, HttpServletResponse response) throwsIOException, ServletException {
04.// 이 코딩의 목적은 브라우저에게 지금 우리가 내려보내는 것이 JAR라는 사실을 알리려는 것입니다. HTML 페이지가 아니기에 application/jar 라고 타입을 설정하는 것입니다.
05.response.setContentType("application/jar");
06. 
07.ServletContext ctx = getServletContext();
08.// 이 코드를 풀어서 말해보면 "자원(/bookCode.jar 파일)을 입력 스트림으로 주세요" 라는 뜻입니다.
09.InputStream is = ctx.getResourceAsStream("/bookCode.jar");
10. 
11.int read = 0;
12.byte[] bytes = new byte[1024];
13. 
14.// 전형적인 I/O 코딩입니다. 먼저 JAR 바이트를 읽어, 출력 스트림에 바이트를 기록합니다.
15.OutputStream os = response.getOutputStream();
16.while ((read = is.read(bytes)) != -1) {
17.os.write(bytes, 0, read);
18.}
19.os.flush();
20.os.close();
21.}
22.}

getResourceAsStream()의 인자값으로 들어오는 파일 경로는 반드시 /로 시작해야 합니다. 여기서 /는 해당 웹 애플리케이션 루트를 의미합니다. 따라서 bookCode.jar 파일은 JarDownload 아래에 위치합니다. 

반응형

'차근차근 > JAVA JSP' 카테고리의 다른 글

Request 객체  (0) 2014.07.26
Response 객체  (0) 2014.07.26
[Tip] getWriter() 와 getOutputStream() 차이점  (0) 2014.07.26
inputstreamreader  (0) 2014.07.26
[ Java ] e.toString(), e.getMessage(), e.printStackTrace()의 차이점  (0) 2014.07.26