티스토리 뷰

   get / post / put 방식의 차이점에 관해서는 검색해보면 많이 나오니 패스.


   본 글에서는 put 방식을 사용할 때, 서버 측 코딩을 어떻게 해야 하는지에 관한 코딩 예를 보여주는 것을 목적으로 한다.


   get,post만 써오다가 put을 써야하는 일이 생겼는데, 나의 경우 아두이노에서 측정한 온도/습도 데이터들을 실시간으로 웹서버에 전송해 DB에 저장하는 작업을 하기 위해서였다.


   막연히 doPut 메서드를 써야하는 것만 알고 있었고, 그것을 중심으로 국내외 웹사이트를 다 검색해봤지만 doPut에 써야할 코드가 어떤 식인지는 잘 나오지 않았다.


   나같은 사람은 별로 없겠지만, 혹시라도 나같은 사람을 위해 여기에 방법을 적는다.


   이해를 돕기 위해 이런 건 항상 최대한 간단하게 올린다. 응용은 각자 알아서 하시기를.



	
		PutTestServlet
		web.controller.PutTestServlet
	
		readonly
		false
	
	
	
		PutTestServlet
		/putTest.do
	


   우선 web.xml에 위와 같이 서블릿을 정의해준다. /putTest.do라는 주소로 put 방식의 리퀘스트가 들어왔을 때, PutTestServlet 클래스로 흐름이 넘어간다.


   servlet-class는 서블릿이 있는 위치를 정확하게 명시해준다. 이건 어디까지나 샘플이기 때문에 내용은 각자 상황에 따라 다르다. 모르면 검색해볼 것.



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PutTestServlet extends HttpServlet {

	@Override
	protected void doPut(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		String rawData = null;
		String rawData2 = "";
		
		BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream()));
		
		while((rawData = br.readLine()) != null){
			rawData2 += rawData;
		}
		
		System.out.println("데이터 잘 들어왔나? : " + rawData2);
		
		// 장치로부터 전달받은 rawData2를 DB에 insert한다든지 하는 작업은 이곳에...
		
		br.close();
		
	}
	
}


   그리고나서 web.xml에 명시한 servlet을 같은 이름으로 해당 위치에 만들어준다.


   HttpServlet을 상속받고 doPut메서드를 오버라이드 해준다.


   put의 경우 request.getParameter(String str)로는 안되고 request.getInputStream()을 이용해야 한다.




   테스트는 curl을 이용한다.


   curl 다운로드 ☞ http://curl.haxx.se/download.html


   커맨드 창을 열고 다음과 같이 curl을 실행한다. (curl 사용법 또한 검색하면 나온다 curl --help로 명령어들을 다 볼 수도 있다)

   → curl -X PUT -d "This is data~~~" http://localhost/ProjectName/putTest.do


   간단하게 This is data~~~라는 텍스트를 전송해본 것.


   성공하면 200 코드가 뜰 것이다.



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함