Develop/Java
gradle3 API server
크레이지제이
2021. 11. 13. 18:53
반응형
gradle3 API server
간단하게 더하기 서버 만들기2
- POST 방식으로 JSON 형식으로 데이터를 보내고 받기로 한다.
서블릿에서 입력 추출
- 입력값을 읽어 그대로 출력하도록 했다.
- GET 방식은 사용안함. POST만 처리하도록 수정.
@WebServlet("/add")
public class Add extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException {
PrintWriter out = response.getWriter();
out.write("not support get!");
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException {
process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException {
BufferedReader br = request.getReader() ;
char[] cbuf = new char[request.getContentLength()] ;
br.read(cbuf) ;
String input = new String(cbuf) ;
System.out.println("/add: INPUT="+input);
PrintWriter out = response.getWriter();
out.write(input);
}
}
- 브라우저로 localhost:8080/addserver/add 접속하면 "not support get!" 이라고 출력.
- POST 방식으로 보낼수 있는 크롬 툴을 써서 테스트. (ARC 를 사용)
- POST 입력값을 그대로 출력하는 것을 확인하였다.
JSON 형식으로 받아 출력하도록
위 사이트에서 JSON 라이브러리를 찾아 추가한다. 아래 Gradle 형식으로 추가하려면 어떻게 해야 하는지 나온다. 복사하여 붙여넣기.
app/build.gradle에 위 한줄을 추가한다.
...
dependencies {
...
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
...
}
...
기능 구현
- JSON 형식으로 받고, 출력한다.
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException {
BufferedReader br = request.getReader() ;
char[] cbuf = new char[request.getContentLength()] ;
br.read(cbuf) ;
String input = new String(cbuf) ;
System.out.println("/add: INPUT="+input);
PrintWriter out = response.getWriter();
response.setContentType("application/json");
JSONObject jret = new JSONObject() ;
JSONParser jp = new JSONParser() ;
try {
JSONObject jobj = (JSONObject) jp.parse(input);
System.out.println("name="+jobj.get("name"));
System.out.println("age="+jobj.get("age"));
long a, b ;
a = (Long)jobj.get("a");
b = (Long)jobj.get("b");
jret.put("sum", a+b) ;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.write(jret.toJSONString());
}