------------------------------------------------------------------------------------------------
출처: http://rogerrb.blogspot.com/2009/07/httpclient-and-fileupload.html
------------------------------------------------------------------------------------------------
August 2004 Discuss this Article Adapted from: Pro Jakarta Commons, by Harshad Oak Publisher: Apress ISBN: 1590592832 |
인터넷 상에서 이루워지는 모든 커뮤니케이션은 파일 전송 프로토콜 (FTP), 단순 전자우편 전송
프로토콜 (SMTP), 우체국 통신 규약 (POP), 하이퍼 텍스트 전송 프로토콜 (HTTP) 과 같은 표준 프로토콜을 사용하여 이루어진다.
HTTP은 World Wide Web상에서 가장 필수적이고 가장 대중적인 프로토콜이다.
오늘날 많은 어플리케이션 폭넒게 사용하는 프로토콜이다. 만일 자바어플리케이션이 HTTP을 사용하여 상호 작용한다면 HTTPClient 컴포넌트는 조금 더 쉽게 할 수 있는 방식을 제공한다. 이 컴포넌트를 사용한다면 HttpClient컴포넌트에서 제공하는 클래스와 메소드을 이용함으로 프로토콜의 기술적인 측면에서의 걱정을 해소할수 있다. 이 Article에서는 HTTPClient 컴포넌트의 몇가지 사용예를 살펴볼 것이다. 우리는 서버측 파일 업로드 업무을 지원하는 FileUpload 컴포넌트에 대하여서도 간단하게
살펴 볼 것이다. 그리고 마지막으로 우리는 HTTPClient와 FileUpload컴포넌트을 함께 사용한 예를 살펴 볼 것이다.
Introducing HttpClient
HttpClient은 HTTP상에서 커뮤니케이션을 하는 자바 기반의 어플리케이션 개발을 쉽게 할 수 있도록 제공한다. 우리가 웹 브라우저 또는 그에 준하는 어플리케이션을 개발한다면 HttpClient 은 우리에게 클라이언트 코드 개발에 도움을 줄 수 있다. 이름에서 의미하는것과 같이 HttpClient는 오직 HTTP 클라이언트 코드을 위한 컴포넌트이지 HTTP 요청을 처리하는 서버측 프로세스을 지원하지는 않는다. HttpClient는 다음과 같은 특징을 가지고 있다.
Using HttpClient HttpClient은 Commons Logging 컴포넌트인 commons-logging.jar을 사용한다. 이는 자카르타 아파치 Common프로젝트 사이트에서 다운받을 수 있다.
Using the GET Method
Get 메소드는 대부분의 HTTP 요청을 보내는 방식이다. 하이퍼 링크 같은 경우는 GET방식의 대표적이라 할 수 있겠다. 여기서 HttpClient의 GET방식 요청 예제를 살펴본다. 이 샘플을 테스트 하기전에 서버측에는 요청에 응답을 할 수 있는 Servlet을 등록해야 한다. 여기서는 userInfo클래스을 userinfo.do라는 명칭으로 매핑시켜 사용한다. 그리고 클라이언트에서 서버측으로 전송되는 파라미터는 , firstname, lastname, email 3가지 이다. 서버측 Servlet
Web.xml에 Servlet 등록
HttpClient 코드
서버 측 로그
위 예제는 서버측으로 클라이언트 요청을 보내고 요청에 대한 응답을 받아서 “donepage.html”이라는 파일에 응답내용을 저장하는 클라이언트입니다. org.apache.commons.httpclient.HttpStatus 클래스에는 요청에 대한 응답 코드에 대한 상태 가정이 되어있습니다. 우리는 GET메소드을 사용하여 Name/Value쌍의 파라미터를 전송하는 방식을 간단하게 살펴 보았습니다. Using the POST Method
이번 예제에서는 XML 문서을 HTTP POST 메소드로 서버측에 보내는 예제를 살펴볼 것이다. 전송될 XML문서 post.xml
Post 전송 HttpClient 코드
서버 측 로그
이 방식은 파일 첨부방식을 나타내는 것이기도 하다. 우리가 쓰고있는 FileUpLoad 컴포넌트도 이와 같은 방식을 사용하고 있다. Managing Cookies Cookie관리 예제를 살펴본다. 서버측 JSP
HttpClient 코드
결과
CAUTION HttpClient 코드는 org.apache.commons.httpclient.Cookie클래스을 이용하고, JSP과 servlet코드는 javax.servlet.http.Cookie 클래스을 이용한다. HTTPS and Proxy Servers HttpClient는 HTTPS 프로토콜도 통상의 URLs를 인식하고 구동된다. HTTPS 프로토콜은 Secure Soocket Extension(JSSE) 시스템에 설치 되어있어야 하며 JSSE는 JSDK1.4 버전이상에서는 포함되어 있으며 이하 버전에서는 별로의 설치해야 한다. 만일 porxy서버을 통한 접속일 경우 다음과 같이 PROXYHOST, Port을 넣어주면 된다.
Introducing FileUpload FileUpload 컴포넌트는 서버측에 파일 첨부을 쉽게 해줍니다. FileUpload 컴포넌트는 클라이언트 단이 아닌 서버측에서사용된다는것에 주의 해야합니다. 파일 첨부의 시작은 HTML을 이용하며 서버측에서는 FileUpload 컴포넌트을 사용합으로 쉽게 처리하고, 적당한 위치에 저장할수 있습니다. Using HTML File Upload 다들 아시는 부분이라 이부분의 설명은 제외하고 예제 소스를 바로 살펴봅니다.
fileUP.html
파일 업로드의 시작점은 HTML은 Form의 속성이 method="post" enctype="multipart/form-data" 이어야 합니다. FileUpload 컴포넌트는 enctype에 의해서 전송되는 파라미터를 inputStream으로 받을지 Reader로 받을지 결정합니다. 서버측 프로그램 ProcessFileUpload.jsp
Using HttpClient-Based FileUpload 위 단에서 HTML의 역할을 HttpClient을 이용하여 작성하여본다. JSP파일의 내용은 변함이 없고 클라이언트 코드을 변경함으로써 가능하다.
HttpClient 컴포넌트는 multipart-encoded을 지원하기 위해 다음과 같은 클래스를 제공합니다. org.apache.commons.httpclient.methods.MultipartPostMethod 이 클래스을 이용하여 예제를 작성해 봅니다.
HttpClient 코드
| ||||||||||||||||
'IT_Programming > JSP · Servlet' 카테고리의 다른 글
아파치에서 배포하는 HttpClient 4.x 를 이용해 네트워크 데이터 전송 (0) | 2011.11.27 |
---|---|
[펌] Tomcat 5.5 에서 JNDI Datasource 사용하기 (0) | 2009.04.28 |
[펌] 서블렛 + JDBC 연동시 코딩 고려사항 2 (0) | 2009.01.30 |
[펌] 서블릿+JDBC 사용시 주의 사항 1 (0) | 2009.01.30 |
[펌] JSP 에서 Referer 처리 (0) | 2009.01.30 |