수업 열심히 듣고 코드로 구현해보고.. 해도 뭔가 아리까리 알쏭달쏭한 느낌이라 [10분 테코톡] 🐶 코기의 Servlet vs Spring 영상을 참고하여 다시 개념을 정리해보았다.
먼저, 클라이언트의 요청을 처리하는 서버에는 Web Server
와 WAS(Web Applicaion Server
가 있음
(이거에 대해서는 [10분 테코톡]👳♂️ 알리의 Web Server vs WAS 영상 추천 추천👍👍👍)
Web Server
: 정적 페이지만 생성 가능Web Application Server
: 정적/동적 페이지 모두 생성 가능서버 과부하를 피하기 위해
정적 페이지 생성을 맡는 Web Server를 앞에 두고,
뒷단에 WAS도 두어 Web Server가 처리하지 못하는 동적 페이지를 생성하도록 설계하는 것이 바람직!
서블릿 얘기한다 해놓고 뭔 소리함? (후비적)
고로, Servlet은 동적 페이지 생성을 위한 WAS 내부 프로그램이다!
이미지 출처 : Opendocs Beom's Blog
가장 포괄적인 이유부터 이야기하자면,
위에서 이야기 한대로 동적 페이지 생성을 위해 동적 정보 처리가 필요하기 때문
다음으로는,
복잡한 HTTP 프로토콜 분석/처리/응답하는 과정없이(완전 없는건 아니고 개발자가 안함)
Servlet을 상속 받아 내부 메소드를 이용하여 위 과정을 대신하면
개발자들이 핵심적인 비즈니스 로직 처리에만 집중할 수 있기 때문
HttpServletRequest
, HttpServletresponse
생성, 이 둘을 인자로 하는 service 실행(doGet(),doPost(),service())HttpServletRequest
, HttpServletresponse
소멸이미지 출처 : [10분 테코톡] 🐶 코기의 Servlet vs Spring (7'25'')
서블릿을 개별적으로 다루는 왼쪽 그림과 같은 설계는
요청마다 서블릿을 정의하고, 요청을 수행할 때마다 매번 스레드를 생성함
(게다가 각 서블릿 내부에 공통 로직까지 존재하면..정말 비효율적ㅠ)
오른쪽 그림과 같이 프론트 컨트롤러 패턴으로 설계하면
하나의 서블릿만 정의하고 해당 서블릿이 모든 요청을 수행함
그럼 오늘은 여기까지~(찡긋)
📍 이것 저것 찾아보면서 정리했는데 부족한 부분이 많습니다.
📍 잘못된 부분이 있다면 댓글로 도움 부탁드립니다👍