[JSP/Servlet] JSP/Servlet 환경에서 파일 업로드 위한 Apache Commons FileUpload 라이브러리 설정 방법
Servlet&Jsp 2019. 7. 22. 09:48연관글
파일 업로드시 라이브러리를 사용하는 이유
JSP/Servlet
환경에서 파일을 업로드할때에는 오픈소스 라이브러리를 사용합니다. 왜냐하면 서버입장에서는 평소에 쿼리스트링을 통해 넘어오는 파라미터와는 다르게, 클라이언트가 HTTP 요청메시지의 몸체에 multipart
형태로 업로드한 파일의 바이너리 데이터를 입력 스트림을 통해 읽어들여 각각 잘라서 가공한 다음 사용해야 하는데, 매우 번거로운 일이기 때문입니다.물론 세밀한 조작이나 파일업로드 라이브러리를 직접 개발하기 위해서는 이러한 과정을 직접 개발해야 할 것입니다.
그러나 시간이 없는 우리 일반 웹개발자들에겐 좋은 오픈소스 라이브러리들이 있습니다. 최근 버전의
Servlet3.0
환경에서는 Part
라는 API가 제공되기 때문에 그것을 사용해도 되지만 그 이전버전이라면 Apache Commons
의 FileUpload
라이브러리가 많이 사용됩니다. 추가적으로 첨언하자면
FileUpload
라이브러리는 스프링프레임워크의 spring-web 에서도 사용되는 라이브러리이기도 합니다.이번 글에서는
Apache Commons
파일 업로드 라이브러리를 다운로드하고 프로젝트에 설정하는 방법을 알아보도록 하겠습니다.FileUpload 라이브러리 다운로드하기
Apache Commons
는 Apache Jakarta project
의 일부로서 Java
환경에서 공통적으로 사용되는 코드 모음(라이브러리)를 개발하여 오픈소스로 배포하는 프로젝트입니다(굿). 따라서 Apache Jakarta
공식 사이트에 접속해야 합니다.다음의 URL에 접속 후 왼쪽 사이드의
Commons
메뉴를 클릭합니다.Commons
에는 여러가지 라이브러리가 있는데, 우리가 필요한것은 FileUpload
입니다. 스크롤을 내려 FileUpload를 찾아서 클릭해주세요.다운로드를 위해 스크롤을 내려주세요. 2018년 12월 말을 기준으로
1.4
버전이 나온것 같군요. here
를 클릭해주세요.자신의 환경에 맞는 압축 파일을 클릭해 다운로드합니다. 저는 Windows 환경이므로
bin.zip
파일을 다운받았습니다.
Commons-IO 라이브러리 다운로드
추가적으로 하나 더 다운로드해야할 라이브러리가 있는데,
Commons-io
라이브러리입니다. Commons 프로젝트는 용도와 역할에 따라 여러개의 라이브리를 제공하는데, FileUpload
라이브러리에서 내부적으로 Commons-io
라이브러리를 사용합니다.따라서 이전에 FileUpload를 클릭했던 메뉴에서 IO를 찾아 클릭합니다.
자신의 JDK 버전에 따라
Download Now!
를 클릭합니다. 1.7 이상인 경우 2.6 버전을 클릭합니다.bin.zip
버전을 클릭하여 압축파일을 내려받습니다.설치
내려받은 압축파일을 압축해제 후 .jar파일을 복사합니다. 여러가지 .jar 파일들이 있는데, 실제로 필요한것은
commons-fileupload-1.4.jar
와 commons-io-2.6.jar
입니다.각각을 복사합니다.
복사한 라이브러리를 이클립스상의 웹어플리케이션 경로의
WEB-INF/lib/
하위에 붙여넣습니다. 실제 톰캣에 배포할것이라면 톰캣의 webapps/웹어플리케이션/WEB-INF/lib/
입니다.여기까지 진행하셨으면 Servlet/JSP에서 파일 업로드를 위한 라이브러리 설정이 완료됩니다.
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] Servlet 3.0에서 Part API를 통한 파일업로드 구현하기 (2) | 2019.07.26 |
---|---|
[서블릿/JSP] Apache Commons FileUpload를 이용한 파일업로드 구현하기 (2) | 2019.07.24 |
[서블릿/JSP] HttpSessionAttributeListener 리스너로 세션 Attribute 변경시 이벤트 처리하기 (0) | 2019.07.18 |
[서블릿/JSP] HttpSessionListener 리스너로 세션 생성 및 종료시 이벤트 처리하기 (0) | 2019.07.17 |
[서블릿/JSP] ServletRequestAttributeListener 리스너로 ServletRequest attribute 변경시 이벤트 처리하기 (0) | 2019.07.16 |