20240726
2024. 7. 26. 16:25ㆍ자바일지
728x90
반응형
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
public class App {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
System.out.println("Server is listening on port 8000");
}
static class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "Hello, World!";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
import 문은 필요한 Java 클래스와 패키지를 불러옵니다.
- HttpServer는 HTTP 서버를 생성하고 관리하는 클래스입니다.
- HttpHandler는 HTTP 요청을 처리하는 인터페이스입니다.
- HttpExchange는 HTTP 요청과 응답을 캡슐화하는 클래스입니다.
- IOException은 입출력 관련 예외를 처리합니다.
- OutputStream은 데이터 출력을 위한 스트림입니다.
- InetSocketAddress는 IP 주소와 포트를 캡슐화하는 클래스입니다.
- main 메서드는 자바 프로그램의 시작 지점입니다.
- throws IOException은 메서드가 IOException 예외를 던질 수 있음을 나타냅니다.
- HttpServer.create 메서드는 지정된 포트(여기서는 8000)에서 새로운 HTTP 서버 인스턴스를 생성합니다.
- new InetSocketAddress(8000)는 서버가 8000번 포트에서 수신 대기하도록 설정합니다.
- 두 번째 인자는 요청 대기열의 최대 크기를 설정합니다. 0은 기본값을 사용한다는 의미입니다.
- createContext 메서드는 지정된 컨텍스트(여기서는 "/")에 대한 요청을 처리할 핸들러를 설정합니다.
- new MyHandler()는 MyHandler 클래스를 인스턴스화하여 요청을 처리하도록 합니다.
- setExecutor(null)은 기본 실행자를 사용하도록 서버를 설정합니다. 이 실행자는 요청을 처리할 스레드를 생성합니다.
- start 메서드는 서버를 시작합니다.
- System.out.println은 서버가 8000번 포트에서 수신 대기 중임을 콘솔에 출력합니다.
- MyHandler 클래스는 HttpHandler 인터페이스를 구현합니다.
- handle 메서드는 HTTP 요청을 처리합니다. 이 메서드는 HttpExchange 객체를 인수로 받습니다.
- response 문자열은 클라이언트에게 보낼 응답 메시지입니다.
- sendResponseHeaders 메서드는 응답의 상태 코드(200은 성공)와 응답 본문의 길이를 설정합니다.
- getResponseBody 메서드는 응답 본문을 쓰기 위한 출력 스트림을 반환합니다.
- write 메서드는 응답 메시지를 바이트 배열로 변환하여 출력 스트림에 씁니다.
- close 메서드는 출력 스트림을 닫아 자원을 해제합니다.
728x90
반응형