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
반응형

'자바일지' 카테고리의 다른 글

20240801  (0) 2024.08.01
20240731  (0) 2024.07.31
20240725  (0) 2024.07.25
20240724  (6) 2024.07.24
20240723  (1) 2024.07.23