스프링(Spring) 및 자바(JAVA)

스프링 부트 개념 정리 - 이론09

Dev.99_tale 2025. 3. 9. 18:47

톰캣(Tomcat)과 웹 서버의 차이 – 웹 요청 처리 원리

이번 글에서는 톰캣(Tomcat)이 무엇인지, 그리고 웹 서버(Web Server)와의 차이를 정리해보겠습니다.


 웹 서버(Web Server)란?

"웹 서버는 클라이언트(브라우저)의 요청을 받아, HTML, CSS, 이미지 등의 정적인 자원을 제공하는 서버이다!"

🔹 웹 서버의 동작 원리

1️⃣ 클라이언트(을)  웹 서버(갑)에게 요청(Request)
2️⃣ 웹 서버는 요청된 정적 자원(HTML, 이미지, 동영상 등)을 응답(Response)
3️⃣ 클라이언트는 응답받은 데이터를 화면에 렌더링

📌 "웹 서버는 요청이 들어오면, 단순히 파일을 찾아서 반환하는 역할을 한다!"


🔹 웹 서버의 요청/응답 예제

요청: http://example.com/video.mp4  
응답: video.mp4 파일을 브라우저에 전송

📌 "웹 서버는 단순히 정적인 파일(HTML, CSS, JS, 이미지 등)을 반환한다!"


 웹 서버는 HTTP 기반으로 동작한다

"HTTP는 요청(Request)이 있을 때만 응답(Response)하는 방식이다!"

📌 HTTP의 특징

 Stateless(무상태성) – 요청이 끝나면 연결을 끊음
 자원을 요청해야 응답 가능 – 서버가 클라이언트의 IP를 몰라도 됨
 HTML, CSS, JS 등 정적(Static) 파일만 제공

📌 "웹 서버는 정적 파일을 제공하는 역할만 하며, 동적인 데이터 처리는 불가능하다!"


 소켓(Socket)과 HTTP 통신

"HTTP는 운영체제의 소켓을 이용해 데이터를 주고받는다!"

📌 소켓이란?

  • 네트워크에서 데이터를 주고받는 연결 창구
  • IP 주소 + 포트 번호로 식별

📌 HTTP vs 소켓 통신

통신 방식 설명
HTTP 통신 요청이 있을 때만 응답 (Stateless)
소켓 통신 지속적인 연결 유지 가능 (Stateful)

📌 "HTTP는 요청이 있어야만 응답을 할 수 있으며, 지속적인 연결이 필요하면 소켓 통신을 사용해야 한다!"


 톰캣(Tomcat)이란?

"톰캣은 자바 웹 애플리케이션을 실행할 수 있도록 도와주는 웹 애플리케이션 서버(WAS)이다!"

📌 톰캣의 역할

 동적 데이터 처리 (JSP, 서블릿 실행) – 웹 서버가 할 수 없는 역할
 요청을 분석하고, 필요한 경우 자바 코드 실행 후 HTML로 변환

📌 "톰캣은 자바 웹 애플리케이션을 실행하여, JSP 또는 서블릿을 HTML로 변환해 응답한다!"


🔹 웹 서버와 톰캣의 차이점

구분 웹 서버(Apache) 톰캣(Tomcat)
역할 정적(Static) 파일 제공 동적(Dynamic) 파일 처리
처리 방식 요청된 파일을 그대로 반환 자바 코드를 실행 후 HTML로 변환
예제 HTML, CSS, JS, 이미지, 동영상 JSP, 서블릿 실행 가능
사용 예시 단순 정적 사이트 동적 웹 애플리케이션 (Spring, JSP 등)

📌 "웹 서버는 단순 정적 파일을 제공하고, 톰캣은 동적인 데이터를 처리할 수 있다!"


 톰캣과 웹 서버가 함께 동작하는 방식

1️⃣ 클라이언트(브라우저)가 요청을 보냄
2️⃣ 웹 서버(Apache)가 요청을 받음
3️⃣ 정적 파일이면 바로 응답
4️⃣ JSP/서블릿이면 톰캣으로 요청을 전달
5️⃣ 톰캣이 자바 코드를 실행하여 HTML로 변환 후 웹 서버에 반환
6️⃣ 웹 서버가 변환된 HTML을 클라이언트에 응답

📌 "웹 서버는 단순 파일을 제공하고, 톰캣은 자바 코드를 실행하여 HTML로 변환한다!"


 톰캣이 필요한 이유

"웹 서버는 HTML만 제공할 수 있기 때문에, 자바 코드(JSP, 서블릿 등)를 실행하려면 톰캣이 필요하다!"

📌 톰캣이 없으면?

  • JSP, 서블릿 실행 불가
  • 웹 서버가 요청된 .jsp 파일을 이해하지 못하고 그대로 반환
  • 브라우저가 JSP 코드를 그대로 출력(깨진 화면)

📌 톰캣이 있으면?

  • JSP 파일을 HTML로 변환 후 응답 가능
  • 서블릿을 실행하여 동적인 데이터 처리 가능

📌 "톰캣이 없으면, 자바 웹 애플리케이션을 실행할 수 없다!"


 톰캣의 동작 과정

1️⃣ 클라이언트가 .jsp 파일을 요청
2️⃣ 웹 서버(Apache)가 톰캣에게 요청 전달
3️⃣ 톰캣이 JSP 코드를 실행 & HTML로 변환
4️⃣ 변환된 HTML을 웹 서버에 반환
5️⃣ 웹 서버가 최종 응답

📌 "톰캣이 요청된 JSP 코드를 실행하여, 최종적으로 HTML로 변환한다!"


🔥 핵심 정리

개념 설명
웹 서버 정적 파일(HTML, CSS, JS, 이미지) 제공
톰캣(Tomcat) 동적 웹 애플리케이션 실행 (JSP, 서블릿)
HTTP 통신 요청이 있을 때만 응답 (Stateless)
소켓 통신 지속적인 연결 가능 (Stateful)
톰캣의 역할 JSP 실행 후 HTML로 변환

📢 마무리

웹 서버(Apache)와 톰캣(Tomcat)은 역할이 다릅니다.
📌 웹 서버는 정적인 파일을 제공하고, 톰캣은 자바 코드를 실행하여 동적인 데이터를 제공합니다.
📌 스프링부트는 내장 톰캣을 포함하고 있어, 별도 설정 없이 자바 웹 애플리케이션을 쉽게 실행할 수 있습니다!

 

https://getinthere.tistory.com/9

 

스프링부트 with JPA 1강 - 스프링이란!

1. 스프링이란? 스프링은 프레임워크이다. 스프링은 오픈소스이다. 스프링은 IoC 컨테이너를 가진다. 스프링은 DI 를 지원한다. 스프링은 엄청나게 많은 필터를 가지고 있다. 스프링은 엄청나게

getinthere.tistory.com