Skip to content

speculatingwook/java-http

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

만들면서 배우는 스프링

톰캣 구현하기

학습목표

  • 웹 서버 구현을 통해 HTTP 이해도를 높인다.
  • HTTP의 이해도를 높혀 성능 개선할 부분을 찾고 적용할 역량을 쌓는다.
  • 서블릿에 대한 이해도를 높인다.
  • 스레드, 스레드풀을 적용해보고 동시성 처리를 경험한다.

시작 가이드

  1. 미션을 시작하기 전에 파일, 입출력 스트림 학습 테스트를 먼저 진행합니다.
    • File, I/O Stream
    • 나머지 학습 테스트는 다음 강의 시간에 풀어봅시다.
  2. 학습 테스트를 완료하면 LMS의 1단계 미션부터 진행합니다.

학습 테스트

  1. File, I/O Stream
  2. HTTP Cache
  3. Thread

🔍 진행 방식

  • 미션은 기능 요구 사항, 미션 진행 요구 사항 두 가지로 구성되어 있다.
  • 두 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만든다.
  • 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다.

🚀 step1: 미션 설명

간단한 HTTP 서버를 만들어보자.

저장소에서 소스코드를 받아와서 메인 클래스를 실행하면 HTTP 서버가 실행된다.

웹브라우저로 로컬 서버(http://localhost:8080)에 접속하면 Hello world!가 보인다.

정상 동작을 확인했으면 새로운 기능을 추가해보자.

⚙️ 기능 요구 사항

1. GET /index.html 응답하기

인덱스 페이지(http://localhost:8080/index.html)에 접근할 수 있도록 만들자.

Http11ProcessorTest 테스트 클래스의 모든 테스트를 통과하면 된다.

브라우저에서 요청한 HTTP Request Header는 다음과 같다.

GET /index.html HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: */*

2. CSS 지원하기

인덱스 페이지에 접속하니까 화면이 이상하게 보인다.

개발자 도구를 열어서 에러 메시지를 체크해보니 브라우저가 CSS를 못 찾고 있다.

사용자가 페이지를 열었을 때 CSS 파일도 호출하도록 기능을 추가하자.

GET /css/styles.css HTTP/1.1
Host: localhost:8080
Accept: text/css,*/*;q=0.1
Connection: keep-alive

3. Query String 파싱

http://localhost:8080/login?account=gugu&password=password으로 접속하면 로그인 페이지(login.html)를 보여주도록 만들자.

그리고 로그인 페이지에 접속했을 때 Query String을 파싱해서 아이디, 비밀번호가 일치하면 회원을 조회한 결과가 나오도록 만들자.

✏️ 미션 진행 요구 사항

  • 미션은 jwp-dashboard-http-mission 저장소를 Fork & Clone해 시작한다.
  • 기능을 구현하기 전 README.md에 구현할 기능 목록을 정리해 추가한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 76.9%
  • Java 13.8%
  • HTML 7.8%
  • JavaScript 1.5%