Skip to content

Cho-SangHyun/Chocat

Repository files navigation

🐈‍⬛ Chocat

  • 나만의 WAS 만들기 프로젝트
  • 다음 내용들을 목표로 합니다
    1. 웹 서버 핵심 원리 이해
    2. 서블릿 컨테이너 동작 방식 습득
    3. 멀티스레딩, 동시성 제어 지식 습득
    4. 등등..

기능 목록

1. HTTP 서버 구현

  • 소켓 연결 처리: 클라이언트로부터의 TCP 연결을 수신하고 HTTP 요청을 읽어들이는 기능.
  • HTTP 요청 파싱: HTTP 요청 헤더와 본문을 파싱하여 객체로 변환.
    • 단 요청 본문은 json 형식만 가정
  • HTTP 응답 생성: 요청에 대한 HTTP 응답 객체를 생성하고 클라이언트로 전송.

2. 서블릿 컨테이너

  • 서블릿 생명주기 관리:
    • init(), service(), destroy() 메서드를 관리.
  • 서블릿 매핑:
    • URL 패턴을 서블릿 클래스와 매핑하여 요청을 라우팅.
  • 서블릿 인스턴스 관리:
    • 서블릿 인스턴스의 싱글톤 또는 다중 인스턴스 관리.

3. 멀티스레딩

  • 스레드 풀 구현:
    • 다수의 요청을 병렬 처리할 수 있도록 스레드 풀 생성 및 관리.
  • 동시성 제어:
    • 동시성 이슈를 방지하기 위한 동기화 및 락 메커니즘.

4. 요청 라우팅 및 매핑

  • URL 패턴 매칭:
    • 정규식을 사용하여 URL과 서블릿/핸들러의 매핑 구현.
  • 라우팅 테이블 관리:
    • URL과 서블릿 매핑 정보를 저장하고 탐색하는 데이터 구조.

5. 세션 관리

  • 세션 생성 및 추적:
    • 세션 객체 생성 및 클라이언트 식별을 위한 세션 ID 관리.
  • 세션 데이터 저장:
    • 각 세션에 대한 사용자 데이터 저장 및 만료 정책 설정.

6. 정적 파일 서빙

  • 파일 탐색 및 서빙:
    • 지정된 디렉토리에서 정적 파일을 찾아 클라이언트에 전송.
  • MIME 타입 처리:
    • 파일 확장자에 따라 적절한 Content-Type 헤더 설정.

7. 에러 처리

  • 에러 핸들러:
    • 요청 처리 중 발생하는 에러를 잡아 사용자 정의 에러 페이지로 응답.
  • HTTP 상태 코드 관리:
    • 404, 500 등의 HTTP 상태 코드별 처리 로직.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages