📍 지금 어디를 만지고 있나요?
브라우저
⇄
WAS (Tomcat)
→
Controller
→
Service
→
DB
이 차시의 핵심 용어
정적 페이지 (Static)
이미 디스크에 만들어져 있는 HTML 파일을 그대로 응답으로 보내는 방식. 누가 보든 같은 내용.
동적 페이지 (Dynamic)
요청을 받은 그 순간 서버가 코드를 실행해 HTML 을 새로 만들어 보내는 방식. 누구·언제·무슨 데이터냐에 따라 다른 결과.
웹서버 (Web Server)
정적 파일을 그대로 보내주는 단순한 서버. 대표 제품: Apache HTTP Server, Nginx.
WAS (Web Application Server)
코드를 실행해 동적으로 HTML 을 만드는 서버. 자바 진영 대표 제품: Apache Tomcat.
1. 같은 HTML, 다른 운명
회사 소개 페이지는 누가 들어가도 같은 글이 보입니다. 하지만 네이버 메인은 새로고침할 때마다 뉴스가 바뀌고, 마이페이지에는 내 이름이 떠 있습니다. 같은 HTML 인데 어떻게 한쪽은 고정이고 한쪽은 매번 다를 수 있을까요?
왜 이 차이를 알아야 하나
우리가 앞으로 만들 코드(Spring 으로 짜는 컨트롤러·서비스·매퍼)는 모두 동적 페이지 를 만드는 코드입니다. 동적 처리가 어디서 일어나는지를 모르면, 「내 코드가 도대체 어디서 실행되는 거지?」라는 막막함이 끝까지 갑니다.
2. 정적 페이지
정적 페이지는 디스크에 이미 만들어져 있는 HTML 파일입니다. 서버는 그 파일을 그대로 꺼내서 응답으로 보냅니다.
브라우저 : "/about.html 주세요"
서버 : (디스크에서 about.html 파일 꺼냄)
서버 → 브라우저 : "여기요" (그 파일 그대로)
- 매우 빠르다 (그냥 파일 전송이니까)
- 모두에게 같은 내용
- 회사 소개·약관·FAQ 같이 잘 안 바뀌는 페이지에 적합
3. 동적 페이지
동적 페이지는 요청을 받은 그 순간 서버에서 코드를 실행해 HTML 을 만들어 보냅니다.
브라우저 : "/board/list 주세요"
서버 : (자바 코드 실행)
① DB 에서 게시글 목록 조회
② 조회 결과를 HTML 에 끼워넣기
③ 완성된 HTML 만듦
서버 → 브라우저 : "여기요" (방금 만든 HTML)
- 실행 시간이 든다 (DB 조회·코드 실행)
- 사용자·시간·데이터에 따라 결과가 다르다
- 게시판·로그인·쇼핑몰 등 거의 모든 「살아있는」 사이트가 동적
4. 웹서버와 WAS — 두 종류의 서버
역사적으로 두 역할은 다른 제품으로 나뉘어 있었습니다:
┌──────────────┐
브라우저 ───→ │ 웹서버 │ → 정적 파일 (HTML, CSS, 이미지)
│ (Apache, │ 디스크에서 그대로 꺼냄
│ Nginx) │
└──────┬───────┘
│
┌──────▼───────┐
│ WAS │ → 동적 처리 (자바 코드 실행)
│ (Tomcat) │ Spring 코드가 여기서 돌아감
└──────────────┘
4-1. 웹서버 (Apache, Nginx)
- 정적 파일 응답이 전문
- 자바 코드 실행 능력 없음
- 대규모 사이트의 「입구」 역할
4-2. WAS (Tomcat)
- 자바 코드를 실행해 동적 HTML 생성
- Servlet 과 JSP 를 해석함
- 우리가 만들 Spring 프로젝트가 이 위에서 돌아감
우리 과정에서는
큰 사이트는 웹서버 + WAS 를 따로 두지만, 우리 학습 환경에서는 Tomcat 하나로 둘 다 처리합니다. Tomcat 도 정적 파일 정도는 충분히 보낼 수 있거든요.
5. Tomcat — 우리의 작업 환경
Tomcat 이 하는 일:
- 자바 코드 + JSP 를 해석해서 HTML 을 즉석에서 생성
- HTTP 요청을 받아 적절한 Controller 메서드를 찾아 실행
- DB 에서 가져온 데이터를 화면에 끼워넣음
- 완성된 HTML 을 응답으로 돌려줌
다음 차시에서는 Tomcat 위에 가장 단순한 자바 코드(Servlet) 한 개를 올리고, 브라우저로 첫 응답을 받아봅니다.
6. Before / After
전 차시 끝
HTTP 메시지가 어떻게 생겼는지 알지만, 응답 HTML 이 어디서 만들어지는지 모름.
→
이번 차시 끝
정적/동적의 차이를 알고, 우리 Spring 코드가 결국 Tomcat 이라는 WAS 안에서 돌아간다는 걸 안다.