■ Server
package com.lgcns.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import com.google.gson.Gson;
public class RunManager {
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.addServlet(JsonServlet.class, "/api/json");
server.setHandler(context);
server.start();
System.out.println("Jetty server started: http://localhost:8080/api/json");
server.join();
}
public static class JsonServlet extends HttpServlet {
private final Gson gson = new Gson();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String name = request.getParameter("name");
Map<String, Object> result = new HashMap<>();
result.put("method", "GET");
result.put("status", "success");
result.put("message", "GET request processed");
result.put("name", name);
writeJsonResponse(response, result);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
StringBuilder jsonBody = new StringBuilder();
try (BufferedReader reader = request.getReader()) {
String line;
while ((line = reader.readLine()) != null) {
jsonBody.append(line);
}
}
RequestData requestData = gson.fromJson(jsonBody.toString(), RequestData.class);
Map<String, Object> result = new HashMap<>();
result.put("method", "POST");
result.put("status", "success");
result.put("message", "POST request processed");
result.put("receivedData", requestData);
writeJsonResponse(response, result);
}
private void writeJsonResponse(HttpServletResponse response, Object data)
throws IOException {
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
String json = gson.toJson(data);
response.getWriter().write(json);
}
}
public static class RequestData {
private String userId;
private String userName;
private String message;
public String getUserId() {
return userId;
}
public String getUserName() {
return userName;
}
public String getMessage() {
return message;
}
}
}
jetty version client
HttpClient httpClient = new HttpClient();
httpClient.start();
Request request = httpClient.newRequest(url).method(HttpMethod.POST);
request.content(new StringContentProvider(sendData));
request.header(HttpHeader.CONTENT_TYPE, "application/json");
ContentResponse contentRes = request.send();
System.out.println(contentRes.getContentAsString());
httpClient.stop();
return contentRes.getContentAsString();
■ Client
이거는 java.net 버전임
package com.lgcns.test;
import com.google.gson.Gson;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
public class JsonClient {
private static final Gson gson = new Gson();
public static void main(String[] args) throws Exception {
sendGet();
sendPost();
}
private static void sendGet() throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:8080/api/json?name=testUser"))
.header("Accept", "application/json")
.GET()
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("GET Response:");
System.out.println(response.body());
}
private static void sendPost() throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
Map<String, Object> requestData = new HashMap<>();
requestData.put("userId", "dev001");
requestData.put("userName", "홍길동");
requestData.put("message", "Hello Jetty JSON Server");
String jsonBody = gson.toJson(requestData);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:8080/api/json"))
.header("Content-Type", "application/json; charset=UTF-8")
.header("Accept", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("POST Response:");
System.out.println(response.body());
}
}