우아한테크코스 레벨 4 첫번째 미션을 진행하면서 정리하는 내용
Servlet
- Java 기반의 웹 기반의 요청에 대해 동적으로 처리해주는 역할(WAS)
- 웹 서버가 동적인 페이지를 제공할 수 있도록 도와준다
- 클라이언트의 요청을 처리하고 그 결과를 반환한다
- html 을 사용해서 요청에 응답한다
- Java Thread 를 이용해서 동작한다
Servlet Container
- 서블릿을 관리해주는 컨테이너
- 대표적으로 톰캣
- 서블릿 <-> 웹서버간 통신을 도와준다. (소켓 사용)
- 서블릿 생명 주기 관리
- 멀티쓰레드 지원
1. 톰캣의 Connector 중 하나를 통해 request 를 전달받음
2. 요청을 받으면 HttpServletRequest 와 HttpServletResponse 객체를 생성한다
3. Engine 에서 적절한 서블릿에 매핑함
4. 서블릿에 매핑되면, 톰캣은 서블릿 인스턴스 체크 후 존재하지 않는다면 서블릿 인스턴스 생성
5. init() 메서드로 서블릿 초기화
6. 서블릿의 service() 를 호출. 호출 방식에 따라 doGet(), doPost() 의 메소드를 호출한다
7. 동적 페이지 생성 후 HttpServletResponse 로 결과를 전달한다
8. 응답이 완료되고, Request 와 Response 객체가 소멸된다
Dispatcher Servlet
- HTTP 프로토콜로 오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 Front Controller
- 톰캣과 같은 서블릿 컨테이너가 요청을 받게 될때 모든 요청을 제일 먼저 받음
- 공통적인 작업을 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아 작업을 위임
- MVC 구조에서 사용
- 과거에는 모든 서블릿을 URL 매핑을 위해 web.xml 에 모두 등록해둬야 했지만 dispatcher servlet 이 모든 요청을 먼저 처리해주므로 컨트롤러만 구현해두면 dispatcher servlet 이 알아서 적합한 컨트롤러를 위임해주는 구조가 되었다
참고
https://mangkyu.tistory.com/14
https://velog.io/@jihoson94/Servlet-Container-%EC%A0%95%EB%A6%AC
'우아한테크코스' 카테고리의 다른 글
롬복(lombok) 의 @EqualsAndHashCode 는 필드로 비교할까 getter 로 비교할까 (0) | 2023.09.30 |
---|---|
5차 데모데이 회고 (0) | 2023.09.26 |
API 문서화에 RestDocs + Swagger UI 적용하기 (0) | 2023.08.23 |
런칭 페스티벌 회고 (0) | 2023.08.21 |
3차 데모데이 회고 (7) | 2023.08.04 |