목차
- 요구사항
- 학습 내역
- 톰캣을 쓰는 이유
- 입출력과 버퍼
- 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
[Java] 입출력(I/O)과 버퍼(Buffer)
서론 ByteArrayOutputStream과 BufferedOutputStream의 차이점에 대한 질문을 받았다. 내가 Java의 입출력 시스템과 buffer에 대한 이해도가 떨어진다는 상태를 자각하게 되었다. 이를 공부하는 내용을 작성하
yeonyeon.tistory.com
💜 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
💜 스레드 풀 설정
[Java] Thread Pool 이해하기
📚 함께 읽으면 좋은 글 프로세스와 스레드 Thread 이해하기 📑 목차 Green Thread vs Native Thread Java는 어떤 스레드를 사용하는가 Thread Pool 💥 Green Thread vs Native Thread 🔸 Green Thread = Virtual..
yeonyeon.tistory.com
3. 추가 미션 📬
📧 HTTP 활용하기
👉 https://github.com/yeon-06/jwp-hands-on/pull/1
[220902] HTTP 활용하기 by yeon-06 · Pull Request #1 · yeon-06/jwp-hands-on
0단계 - 휴리스틱 캐싱 제거하기 HTTP 응답 헤더에 Cache-Control가 없어도 웹 브라우저가 휴리스틱 캐싱에 따른 암시적 캐싱을 한다. 의도하지 않은 캐싱을 막기 위해 모든 응답의 헤더에 Cache-Control:
github.com
📧 Thread 활용하기
👉 https://github.com/yeon-06/jwp-hands-on/pull/2
[220905] Thread 활용하기 by yeon-06 · Pull Request #2 · yeon-06/jwp-hands-on
0단계 - 스레드 이해하기 다음 순서로 학습 클래스의 테스트를 통과시켜보자. ThreadTest SynchronizationTest ThreadPoolsTest 1단계 - 동시성 이슈 확인하기 스레드를 다룰 때 어떤 상황이 발생할 수 있을지
github.com
(+)
몇 주 전에 진행한 미션인데 여유가 없어 이제야 정리하게 되었다😭
'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 |