Servlet- 서블릿은 예전에 스프링같은 편리한 프레임워크를 사용하기전 사용했다고한다.
서블릿의 역할
서블릿은 프로그래머가 핵심적인 코드만 작성하도록 도와준다.
의미있는 비즈니스 로직 외에도 저런 수많은 작업을 처리해줘야 한다.
연결하고 파싱하고 연결끊고... 이런걸 전부 한땀한땀 하기에는 너무나도 힘들다.
난 대학에서 네트워크 시간에 http connection을 만들고 파싱하고 이런걸 해봐서 이 고통을 이해한다.
그게 싫었던 사람들은 서블릿을 만들어냈다.
스프링부트는 기본 내장 was로 톰켓을 사용한다.
was로 http 요청이 들어오면 was는 response와 request 를 생성하여 서블릿컨테이너에서 싱글톤으로 관리되는 서블릿 객체에 넘겨준다.
+ 동시요청에 대비해 멀티쓰레딩을 이용해 서블릿 객체에 접근한다. 쓰레드 풀에서 하나씩 꺼내쓰는 방식.
+ 스프링말고 node.js 에서는 단일 쓰레드로 non-blocking하게 돌아간다고 했던것같은데, 차이가 있는것이다. 스프링 webflux에서는 노드랑 비슷하게 한다고 한다.
그리고 나서 개발자가 이것저것 할일을 하고 나서
response를 이용해서 was에서 http 응답을 만들고 보내게 된다.
이렇게 편리한 서블릿은 html 생성이 어렵다는 단점이 있었다고 한다.
그래서 그 뒤로도 많은 변화가 있었다.
-역사-
서블릿 - 1997
:HTML 생성이 어려웠다
JSP - 1999
:HTML 생성은 편리. 비즈니스 로직까지 너무 많은 역할 담당하여 한 클래스에 라인이 엄청났다
서블릿, JSP 조합 MVC 패턴 사용
:모델, 뷰 컨트롤러로 역할을 나누어 개발. 하지만 아직 불편했다.
MVC 프레임워크 춘추 전국 시대 - 2000년 초 ~ 2010년 초
:MVC 패턴 자동화, 다양한 기능 지원
-스트럿츠, 웹워크, 스프링 MVC 등등이 있었음.
-현재는 스프링이 승리함
'Dev > Spring' 카테고리의 다른 글
Controller와 Service의 역할에 대한 고민 (2) | 2021.12.17 |
---|---|
[Lombok ] 클래스 단위로 @Builder 사용시 주의점 (0) | 2021.08.20 |
9. 빈 스코프 (0) | 2021.03.28 |
8. 빈 생명주기 콜백 (0) | 2021.03.28 |
7. 의존관계 자동 주입 (0) | 2021.03.28 |