사용자가 웹 브라우저를 통해 웹 사이트에 접근하면, 웹 서버는 해당 요청을 받아 해당 HTML 파일이나 이미지 등을 전송한다. ex) path/home.html
Apache, Nginx, IIS 등
웹 애플리케이션 서버는 동적 콘텐츠 처리를 위한 비즈니스 로직을 수행한다. 클라이언트로부터의 동적 컨텐츠 요청이 들어오면, 해당 요청을 분석하고 데이터베이스와 상호작용하거나 계산 등을 수행한 후, 동적으로 생성된 HTML을 웹 서버를 통해 클라이언트에게 전달한다.
즉, 웹 컨테이너의 역할을 수행하는 것이다.
웹 컨테이너란?
서블릿(Servlet) 또는 JSP 같은 동적 자원 처리해주는 어플리케이션
사용자가 로그인을 시도하면, 웹 애플리케이션 서버는 사용자의 아이디와 비밀번호를 받아 데이터베이스와 상호작용하여 인증을 수행하고 결과를 동적으로 생성된 HTML 형태로 웹 서버를 통해 전달한다.
Tomcat, JBoss, Jeus 등


1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
4-1. Thread는 Servlet의 service() 메서드를 호출한다.
4-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
6. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
7. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html