WAS란?
웹 서버 (WEB) 이란?
작성된 html 페이지 등을 네트워크망에 종속되지 않고, 웹 서비스를 할 수 있도록 하는 어플리케이션
1. 소프트웨어의 웹 서버: 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지에서 흔히 찾아볼 수 있는 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램.
2. 하드웨어의 웹 서버: 위 기능을 제공하는 컴푸터 프로그램을 실행하는 컴퓨터
ex. Apache, Nginx
사용 목적:
정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 파일과 같은 리소스를 제공하는 서버에 좋다.
웹 서버 (WAS, Web Applicatino Server) 란?
웹 서버 + 웹 컨테이너
인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어 (소프트웨어 엔진)이다. 웹 애플리케이션 서버는 동적 서버 컨텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행된다.
웹 서버 + 웹 컨테이너라고 쉽게 생각하면 된다. 컴포넌트를 올려놓고 사용하게 되는 서버인데, 컴포넌트란 웹 컨테이너랑 jsp와 servlet을 실행시킬 수 있는 소프트웨어이다.
* 웹 컨테이너 ?
jSP와 servlet을 실행시킬 수 있는 소프트웨어이다.
웹 서버에서 jsp를 요청하면 톰캣에서는 jsp 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹 서버에게 전달한다. (즉 jsp와 servlet 구동 환경을 제공한다.)
+ 서블릿은 클라이언트가 어떤 요청을 하면 그에 대한 결과를 전송해줘야하는데, 이런 역할을 하는 자바프로그램이다.
ex. Tomcat, JBoss
사용 목적:
동적인 데이터를 처리하는 서버이다. DB와 연결되어 데이터를 주고 받거나, 프로그램으로 데이터 조작이 필요한 경우에 WAS를 활용한다.
우리가 만드는 웹 페이지는 정적, 동적 컨텐츠가 모두 있기 때문에 웹 서버와 WAS 모두 사용한다.
작동 원리:
1. 웹 서버로부터 요청이 오면 컨테이너가 받아서 처리한다.
2. 컨테이너는 web.xml 을 참조하여 서블릿에 대한 쓰레드를 생성하고, httpServletRequest와 httpServletResponse 객체를 생성하여 전달한다.
3. 컨테이너는 서블릿을 호출한다.
4. 호출된 서블릿의 작업을 담당하게 된 쓰레드는 doPost(), doGet()을 호출한다.
5. 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response 객체이 담아 컨테이너에 전달한다.
6. 컨테이너는 전달받은 Response 객체를 HTTPResponse 형태로 바꿔 웹 서버에 전달하고, 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킨다.