우리가 컴퓨터를 키면 100명중 90명 이상은 웹브라우저를 통해 인턴넷을 사용할거라고 생각합니다^^

웹브라우저는 도대체 어떻게 내가 주소창에 쓴 주소에 맞는 화면을 띄워줄까요?


웹브라우저는 네트워크를 통해 다른 곳의 컴퓨터에게 웹페이지를 보내줘~ 라고 요청을 합니다.

그리고 그 컴퓨터는 해당주소에 맞는 웹페이지를 보내주는 것이죠.


(흠... 간단한 원리잖아?)


이렇게 웹브라우저의 요청에 의해서 해당되는 웹페이지를 보내주는 일을 하는 컴퓨터(혹은 소프트웨어)웹서버 라고 합니다.




                                                       ↑

                                               웹브라우저 

* 웹 페이지 찾기가 ②번 입니다.


우리가 웹브라우저의 주소창에 쓰는 주소를 URL이라고 말합니다. 

그리고 웹페이지는 HTML문서입니다.

따라서 웹서버가 하는일을 다시 말해보면 웹브라우저로부터 URL을 전송받아 그에 해당하는 HTML문서를 찾아서 보내주는 역할을 하는것이겠네요

이때 사용되는 HTML, CSS, JavaScript를 클라이언트측 언어라고 합니다.

하지만 웹서버는 정적인 페이지를 표현할 뿐입니다


동적인 페이지는 다음과 같이 처리 되어집니다.



위와 같은 그림의 순서로 진행됩니다.

웹브라우저가 sogom.com이라는 웹서버에게 index.jsp를 요청합니다.

웹서버는 마지막 .jsp라는 부분을 보고 자신이 할 수 일이 아니이기 떄문에(웹서버는 정적페이지만을 처리합니다) Web Container에게 JSP 및 Servlet을 처리하도록 합니다.


JSP의 처리과정을 조금 자세히 들여다 보면 

먼저 요청된 jsp파일을 파싱합니다.

파싱과정을 통해서 서블릿(Servlet)이라는 자바파일이 생성되게 됩니다.

생성된 서블릿파일은 실행이 가능한 상태인 클래스파일로 컴파일 되고 메모리에 적재되어 실행이 되게 됩니다.

실행 결과를 웹서버에 넘겨주면 HTML형태로 사용자에게 응답내용을 전송해줍니다.


이 과정이 낯설고 복잡하게 느껴질수 있지만 어떻게 jsp파일이 동작되는지 알아놓는것은 필수입니다.

여기서 생소한 단어들을 제가 적었는데요

Web Container, 서블릿 이라는 단어를 사용했습니다


먼저 서블릿(Servlet)에 대해 잠깐 설명하겠습니다.

사실 서블릿은 JSP이전에 웹 개발을 위해 사용된 기술입니다.

이 기술은 자바 클래스 형태로 웹 어플리케이션을 개발 합니다

따라서 서블릿을 이용해 웹 어플리케이션을 개발할 떄에 출력데이터를 조금이라도 바꾸고 싶을때 마다 컴파일을 진행해야 한다는 점이

생산성을 낮추는 요인이 되었습니다.

그러나 이것을 보완하기위해 개발된것이 JSP입니다.

JSP는 서블릿을 기반으로 만들어졌습니다.

jsp파일이 번역될때 제가 서블릿이라는 자바파일이 만들어지는 부분이 바로 서블릿 기반으로 만들어짐을 볼 수 있는 부분입니다.


그림에서 보라색박스로 둘러놓은 부분을 바로 웹 컨테이너라고 합니다.

웹 컨테이너는 JSP, Servlet을 실행할 수 있도록 해주는 즉, 동적인 Data를 처리하는 녀석입니다.



간단하게 다시 용어를 정리해 보면


웹 서버(Web Server)

 - 클라이언트의 요청을 받아 정적인페이지를 처리합니다

 - 웹 서버 자체적으로 처리가 불가한 경우는 웹 컨테이너를 통해 처리합니다

 - 또한 처리결과를 받아와 사용자에게 넘겨주는 역할을 하기도 합니다.

 - Apache, IIS 등...


웹 어플리케이션 서버(Web Application Server / WAS)

 - 웹서버 + 웹컨테이너

 - 동적인 페이지(jsp, asp등)을 표현하기 위한 서버

 - 톰캣, 제우스, 웹스피어 등...



저도 정리하면서 많이 헷갈리네요.. ㅠ 

여기저기 둘러보고도 정리가 잘 안되신다면

https://www.youtube.com/playlist?list=PLuHgQVnccGMAE4Sn_SYvMw5-qEADJcU-X

위의 링크를 통해 영상을 참고해주세요

생활코딩을 운영하시는 이고잉님 께서 좋은 강의들을 올려주고 계십니다.