티스토리 뷰
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 코드가 뜰 것이다.
'공장 (factory) > - Programming..' 카테고리의 다른 글
[Java] Mybatis 설정하기. (0) | 2014.01.24 |
---|---|
[Java/JSP] JSON 간단 예제. (1) | 2014.01.20 |
[HDFS/Java] HDFS를 Java에서 사용하기 (0) | 2013.11.06 |
[JSP] RSA를 이용한 ID/PW 암호화 (2) | 2013.11.04 |
[Cassandra] DevCenter - DataStax Developer Tool (2) | 2013.10.29 |