ecsimsw

스프링 이전에 Servlet 본문

스프링 이전에 Servlet

JinHwan Kim 2020. 7. 29. 04:05

시작 전 복습 

 

WAS : Web Application Server 

 

Web Server는 정적인 컨텐츠, Web Container는 동적 컨테이너를 처리하기 위한 어플리케이션 서버. 대표적인 Web Server가 아파치, 대표적인 WAS가 톰캣이다.

 

 

Spring Web MVC

  Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning.

 

  스프링 Web MVC는 servlet API 기반으로 구축된, 스프링 프레임워크를 포함한 웹 프레임워크이다. 어떻게 Servlet을 기반으로 하고, 어떻게 스프링 프레임워크를 포함했다는 걸까

 

javax.servlet.HttpServlet / 익숙한 doGet, doPost가 보인다.

Servlet

Servlet은 Java EE에서 제공하는 Web Application 제작용 API이다.

 

  Java SE (Standard edition)는 자바 프로그래밍 언어의 핵심 패키지를 포함하는 에디션

  (java.lang, java.io, java.util, java.awt ... )

  

  Java EE (enterprise edition)는 Java SE 위에 웹 개발을 위한 API와 환경을 포함하는 에디션

  (JSP, Servlet, JDBC ...)

 

  

서블릿 이전에, web server 개념에 동적 컨텐츠 처리를 위해 등장한 CGI는 사용자의 요청 당 1개의 프로세스를 생성한다. 이런 요청 당 1 프로세스를 기본으로 하는 CGI 방식은 서버의 부하를 낳기 쉬웠고 이를 개선해서 등장한게 Servlet이다.

 

Servlet은 인-프로세스 방식으로, 클라이언트의 요청을 쓰레드로 처리한다.

 

Servlet Container

Servlet Container는 Servlet의 생명 주기를 관리한다. 요청이 들어오면 Servlet을 실행시켜 doGet, doPost와 같은 요청을 처리할 수 있는 기능을 수행시킨다.

 

Init -> servlet Method -> Destroy

 

Servlet Listener 

Servlet Listener는 Servlet Context의 이벤트를 관리한다. Servlet Container가 Servlet의 Init, Destory 등을 관리했다면, Servlet Listener는 Servlet Context의 이벤트를 관리한다.

 

그 순서를 나타내면 다음과 같다.

 

  Context Initialize -> servlet Init -> servlet Method -> servlet destroy -> Context Destory

 

 

Servlet Filter

Servlet Filter는 Servlet Container가 Servlet를 호출하는 처리 사이에 생성되어 이름처럼 필터링 작업을 하고 다음 작업으로 체이닝한다.

 

  Context Initialize -> Filter Init -> servlet Init -> Filter and Chain -> servlet Method -> servlet destroy -> Context Destory

 

 

 

마무리

정적 페이지만 보여주는 웹 서버부터, 동적인 처리를 요청당 하나의 프로세스로 처리하던 비효율적인 어플리케이션 서버 CGI. CGI를 개선해서 Servlet가 뭔지, Servlet Container가 어떻게 Servlet을 관리하는지 정리했다.

 

여기까지는 Servlet인데, 그럼 Servlet을 바탕으로 구축된 Spring를 사용한다는게 어떤 의미를 갖는지 알아보려고 한다.

 

 

다음

스프링을 사용한다는 것.

 

https://ecsimsw.tistory.com/entry/Spring-MVC-Spring-%EC%82%AC%EC%9A%A9%EC%9D%98-%EC%9D%98%EB%AF%B8

'Server application > Web, Servlet' 카테고리의 다른 글

웹 서버와 WAS  (0) 2021.05.02
DTO와 VO, Entity  (6) 2021.04.16
MVC 패턴  (0) 2020.06.08
JSP,Servlet / 한글화  (0) 2020.05.30
redirect 와 forward의 차이  (0) 2020.05.21
Comments