WS, WAS (톰캣을 알아보자)
스프링 부트 → 내장 톰캣
을 가짐
웹서버
Client → Web Server
: HTTP request
Web Server → Client
: HTTP response
- 정적인 데이터(static data)만 취급
- 예시: Apache HTTP Server, Nginx
웹 어플리케이션 서버(WAS)
- 웹 서버가 정적인 데이터만 볼 수 있음 → 유동적인 로직에 대응하기 힘듦 → 이를 극복하여 동적인 데이터를 반환할 수 있도록 만든 것이 WAS WS는 jsp같은 파일을 이해할 수 없음.
- 로직은 Spring 같은 경우 java로 이루어져 있음(예시: .jsp 파일)
- jsp: HTML 코드에 java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 어플리케이션 도구
- 웹 서버가 클라이언트에게 요청을 받을 때, jsp처럼 자신이 이해할 수 없는 파일 요청이 오면 톰캣에게 제어권을 넘긴다. 톰캣은 jsp 파일에 있는 모든 자바 코드를 컴파일하고, 컴파일이 끝나면 그 데이터를 html에 덮어 씌운 후 아파치에게 전달해준다. 아파치는 Html 파일을 클라이언트에게 전달한다.
💡 웹 브라우저가 .jsp 파일 요청
→ 아파치: 톰캣에게 넘김
→ 톰캣: Jps 자바를 컴파일하고 html로 만들어줌
→ 아파치는 html을 웹 브라우저에게 전달해줌
→ 웹브라우저는 html 파일을 클라이언트에게 보여줌.
톰캣 WAS
: 서블릿 컨테이너 역할
서블릿 컨테이너
: HTTP 요청을 받아 웹 페이지를 동적으로 생성하는 역할
컨테이너
: 동적인 데이터를 받아 가공하여 정적인 파일(HTML)로 만드는 것
서블릿
: 클라이언트 요청을 받아 요청을 처리하고, 그 결과를 클라이언트에게 제공하는 자바 인터페이스
- 아파치 톰캣이라고 부르는 이유: 아파치와 톰캣의 기능은 나뉘어 있지만, 톰캣 안의 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에 보통 아파치 톰캣이라고 부름
- Spring에선..
jar
: tomcat 내장한 빌드 파일
war
: tomcat 내장하지 않은 빌드 파일. 다른 WAS를 연결할 수 있음
💡 결론
WAS는 클라이언트가 동적인 로직이 포함된 파일을 요청하면, 동
적 파일을 컴파일하고 HTML로 만들어,
클라이언트에게 제공함.
참고
velog