🔅 01. 개발을 시작하기 전에
🔅 1.2 배경 지식
1.2.1 하이퍼텍스트 트랜스퍼 프로토콜
1.2.2 자바스크립트 오브젝트 노테이션
1.2.3 서버란?
1.2.4 정적 웹 서버
1.2.5 동적 웹 서버
✔1.2.6 자바 서블릿 컨테이너/엔진
🚩 [사전지식1] 정적 페이지와 동적 페이지
🚩 [사전지식2] 웹 서버와 WAS
🚩 1.2.6. 자바 서블릿 컨테이너/엔진
동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술.
ex) 로그인 시도를 할 때, 서버가 클라이언트에서 입력되는 아이디와 비밀번호를 확인하고 결과를 응답. 이러한 역할을 수행하는 것이 서블릿
개발자들은 서블릿 엔진을 설치 한 후 서블릿 엔진에게 자기가 개발한 비즈니스 로직, 즉 클래스 파일과 해당 클래스 파일을 어느 요청에서 실행해야 하는지 알려줘야 한다. 이때 우리는 서블릿 엔진이 이해할 수 있는 형태로 클래스 파일을 작성해야 한다.
구체적으로 서블릿 엔진이 이해할 수 있는 클래스란 javax.servlet.http.HttpServlet 의 상속받는 서브 클래스를 의미하며, 우리는 HttpServlet을 상속받는 클래스를 작성해 특정 형식에 맞춰 압축해 전달해준다. 이렇게 서블릿 엔진을 이용해 개발자는 서버를 처음부터 구현하지 않고도 각기 다른 비즈니스 로직을 구현하고 배포할 수 있다.
클라이언트의 각 요청과 매개변수에 따라 로직을 작성하는 것이 대부분의 백엔드 개발자가 해야 할 일이다. 그러나 비즈니스 요구사항에 따라 이 로직은 변한다.
개발자들은 아파치나 Ngnix 같은 서버 프로그램을 사용하지 못한다. 그렇다면 백엔드 개발자들은 비즈니스 요구사항에 따라 로직이 변경될 때마다 처음부터 끝까지 소켓 프로그래밍, HTTP 파싱, 스레드 풀 관리 등 모든 것을 새로 작성해야할까?
다행히 자바 프로그램 중 동적 웹 서버 구현을 도와주는 프로그램이 있으며, 이것이 바로 서블릿 엔진이다. 이것이 서블릿을 사용하는 이유이다. 아파치 톰캣이 서블릿 엔진에 해당한다.
클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 WAS에 위임한다. 그러면 WAS는 각 요청에 해당하는 서블릿을 실행한다. 그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다.