목차
- 요구사항
- 학습 내역
- 톰캣을 쓰는 이유
- 입출력과 버퍼
- catalina vs coyote
- 스레드 풀 설정
- 추가 미션
- HTTP 활용하기
- Thread 활용하기
1. 요구사항 🍳
미션 수행 내역은 깃허브 레포지토리에 branch 별로 분류해두었습니다.
🥚 1단계
- http://localhost:8080/index.html 페이지에 접근 가능하다.
- 접근한 페이지의 js, css 파일을 불러올 수 있다.
- uri의 QueryString을 파싱하는 기능이 있다.
🥚 2단계
- HTTP Reponse의 상태 응답 코드를 302로 반환한다.
- POST로 들어온 요청의 Request Body를 파싱할 수 있다.
- 로그인에 성공하면 HTTP Reponse의 헤더에 Set-Cookie가 존재한다.
- 서버에 세션을 관리하는 클래스가 있고, 쿠키로부터 전달 받은 JSESSIONID 값이 저장된다.
🥚 3단계
- HTTP Request, HTTP Response 클래스로 나눠서 구현했다.
- Controller 인터페이스와 RequestMapping 클래스를 활용하여 if절을 제거했다.
🥚 4단계
- Executors로 Thread Pool 적용
- 동시성 컬렉션 사용하기
2. 학습 내역 🔮
💜 톰캣을 쓰는 이유
태초의 웹 어플리케이션을 상상해보자.. 처음부터 끝까지 하나하나 구현해야 했을 것이다. 헤더를 해석하고 로직을 수행하고 응답메시지를 생성하는 등 과정이 포함됐을 것이다. 필요한 비즈니스 로직만 작성할 수 있도록 도와주는 역할이 필요했다. 이로 인해 서블릿이 등장하였고 URL이 호출되면 서블릿 코드를 실행시켜주었다. HttpServletRequest, HttpServletResponse를 이용해 HTTP 요청이나 응답 정보도 편리하게 사용할 수 있게 되었다.
이런 서블릿을 더욱 편하게 사용하기 위해 서블릿 컨테이너가 등장했다. 서블릿 객체를 생성하고 초기화, 호출, 종료 등 생명주기를 관리해주는 등 여러 지원을 해준다. 이 서블릿 컨테이너의 대표적인 예제로는 Tomcat이 있다.
💜 입출력과 버퍼
👉 https://yeonyeon.tistory.com/267
💜 catalina vs coyote
이번 미션에서 구현한 내용은 모두 catalina와 coyote 라는 패키지 내에서 이루어졌다. 실제 톰캣에서도 존재하는 패키지인데 이 둘의 역할에 대해서 간단하게 찾아보았다.
- catalina: tomcat의 서블릿 컨테이너
- coyote: HTTP 1.1 및 2 프로토콜을 웹 서버로 지원하는 Tomcat용 커넥터
Tomcat의 Architecture는 Service, Engine, Host, Connector 등 다양한 구조를 갖고 있는데 여기서 catalina는 Engine, coyote는 Connector에 해당한다. 공식 문서의 설명을 간단하게 번역해보았다.
- Engine
- 커넥터로부터 받은 모든 요청을 수신 및 처리 후 응답 전달
- Connector
- 클라이언트와 통신 처리
- 한 톰캣에는 여러개의 커넥터가 존재할 수 있음
참고
- https://en.wikipedia.org/wiki/Apache_Tomcat#Catalina
- https://tomcat.apache.org/tomcat-10.0-doc/architecture/overview.html
💜 스레드 풀 설정
3. 추가 미션 📬
📧 HTTP 활용하기
👉 https://github.com/yeon-06/jwp-hands-on/pull/1
📧 Thread 활용하기
👉 https://github.com/yeon-06/jwp-hands-on/pull/2
(+)
몇 주 전에 진행한 미션인데 여유가 없어 이제야 정리하게 되었다😭
'Memo > 우테코 4기' 카테고리의 다른 글
[우테코] 최종 데모데이 후기 (10) | 2022.10.22 |
---|---|
[우테코] @MVC 프레임워크 구현 미션 학습 로그 (2) | 2022.10.01 |
[우테코/줍줍] 5차 스프린트 회고 (2) | 2022.09.26 |
[우테코] 레벨3 인터뷰 (0) | 2022.09.05 |
[우테코/줍줍] 4차 스프린트 회고 (8) | 2022.08.24 |