본문 바로가기
네트워크, 서버/웹,웹서버

(웹) CGI / WAS / Servlet / Servlet컨테이너 / JSP / Web MVC / Servlet 동작과정

by 흥부와놀자 2021. 7. 24.

 

CGI(Common Gateway Interface)

- 클라이언트로 부터 요청 받은 웹서버와 프로그램이 통신하는 방법  

 

WAS(WebApplicationServer)

- 정적인 페이지를 처리하는 WebServer와 달리 동적인 페이지를 처리한다. 보통 WebServer로는 Apach, WAS는 Tomcat을 사용하며 WAS로 들어온 요청은 JSP, Servlet 등을 통해 처리 된다.

 

Servlet

- 클라이언트의 요청을 받아서 응답해주는 Java API이다. Servlet만으로 html을 응답할수 있기에 동적인 페이지의 웹 통신을 할 수 있지만 Java로 Html을 만들어서 응답하는 방식이 번거롭고 코드가 바뀔때 마다 매번 컴파일 해야하기에 JSP라는 대안책이 나왔다.

 

Servlet 컨테이너

- 서블릿의 생성과 제거를 담당함

- 웹서버와의 통신 구성

- 요청에 대한 쓰레드를 생성하고 관리함

- 보안기능도 수행

 

JSP(JavaServerpages) 

- Servelt이 Java코드안에 Html이 들어있는 느낌이라면 JSP는 Html안에 Java코드가 들어있다. 기존 Html안에 <% 태그로 java코드를 넣을 수 있다. 보통 MVC모델에서 Servlet이 응답을 받는 컨트롤러로, JSP가 응답을 보여주는 View로 사용된다.

 

Web MVC모델

- Model / Controller / View로 이루어진 웹 요청을 처리하는 모델이며 클라이언트로 부터 요청을 받아 Controller에서 처리를 해주고 Model의 적절한 로직처리 후 결과를 View를 통해 반환한다. 

 

Servlet 동작과정

Servlet 동작과정

1. 브라우저의 요청이 웹서버로 들어온다. 정적 리소스 요청이 아니라면 WAS로 요청이 넘어간다.

 

2. WAS에서 Servelt 컨테이너로 요청이 가게 되고, Servlet컨테이너는 HttpSevletRequest와 HttpServletResponse를 생성한 후 요청에 맞는 서블릿을 찾아 만약 메모리에 없다면 해당 Servlet을 Init시켜준다. 만약 이미 init되어 메모리에 존재한다면 해당 Servlet을 사용한다. 그 후 쓰레드를 생성하여 응답을 수행해 준다.

 

3. 해당 서블릿에서 결과를 응답하기 위해 JSP를 호출하는데 만약 메모리에 해당 JSP가 적재되 있지 않다면 JSP를 서블릿(.java)으로 변화 시켜 메모리에 적재하고 실행시킨다.

 

4. JSP의 실행 결과를 컨테이너의 HttpServletResponse로 보내서 요청한 브라우저에 응답한다.