■ 1. Spring Boot의 static
폴더
static
폴더의 역할- Spring Boot 프로젝트의
src/main/resources/static
폴더에 파일을 넣으면, - 해당 파일들은 웹 브라우저에서
http://<서버주소>:<포트번호>/파일이름
형식으로 누구나 접근할 수 있습니다. static
폴더에example.html
파일이 있다면,http://localhost:8080/example.html
로 접근할 수 있습니다.
- 자동화된 설정
- 별도로 설정하지 않아도 Spring Boot는 기본적으로
static
,public
,resources
등의 폴더에 있는 파일을 자동으로 서빙(serving)합니다. - 이는 Spring Boot가 기본적으로 제공하는 기능으로, 개발자가 쉽게 웹 애플리케이션을 구성할 수 있도록 도와줍니다.
- 이런 자동화된 설정이 바로 프레임워크의 장점 중 하나입니다.
■ 2. Web 서버와 정적 파일
- Web 서버의 역할
- 웹 서버는 브라우저가 요청하는 파일(정적 리소스)을 전달합니다.
- 이 파일들은 HTML, CSS, JavaScript, 이미지 파일 등 브라우저가 이해하고 렌더링할 수 있는 확장자를 가진 파일들입니다.
- 이러한 파일들은 주로
static
폴더에 위치합니다.
- 정적 파일의 특성
- 정적 파일은 서버에 저장된 그대로 클라이언트(브라우저)에게 전달되며,
- 서버에서 처리나 변형 없이 그대로 응답됩니다.
- 이 때문에 브라우저가 요청할 때마다 새로운 파일을 생성하지 않고,
- 서버에 저장된 파일을 그대로 전송합니다.
■ 3. Apache와 Tomcat의 역할 분담
- Apache의 역할
- Apache 웹 서버는 주로 정적 파일(HTML, CSS, 이미지 등)을 서빙하는 데 사용됩니다.
- Apache는 매우 효율적으로 정적 파일을 처리할 수 있지만,
- 동적 컨텐츠(예: JSP, 서블릿 등)를 처리하지는 못합니다.
- Tomcat으로의 위임
- 만약 Apache 서버가 처리할 수 없는 동적 컨텐츠(예: JSP, 서블릿 등)를 요청받으면,
- Apache는 해당 요청을 Tomcat 서버로 전달합니다.
- 이 과정에서 Apache는 요청을 전달하는 역할만 하며,
- Tomcat이 실제로 동적 컨텐츠를 처리하고 응답을 생성합니다.
- 변환 과정
- 동적 컨텐츠(예: JSP)는 Tomcat에서 서블릿으로 변환됩니다.
- 이 서블릿은 요청을 처리하고 동적 응답을 생성한 후,
- Apache를 통해 클라이언트에게 전달됩니다. 이 과정은 다음과 같습니다
- 클라이언트가 JSP 페이지를 요청합니다.
- Apache가 이 요청을 Tomcat으로 전달합니다.
- Tomcat은 JSP를 서블릿으로 변환하고 실행하여 동적 응답을 생성합니다.
- 생성된 HTML 응답이 Apache를 통해 클라이언트에게 전송됩니다.
■ 4. 정적 파일의 단점 및 템플릿 엔진 사용
- 정적 파일의 단점
- 정적 파일은 그 내용이 고정되어 있어, 매번 클라이언트에게 동일한 내용만을 제공합니다.
- 만약 페이지의 내용이 변경되거나 동적인 데이터를 표시해야 할 경우,
- 정적 파일만으로는 이를 처리할 수 없습니다.
- 템플릿 엔진의 필요성
- 동적 컨텐츠를 제공하기 위해서는 템플릿 엔진이 필요합니다.
- 템플릿 엔진은 HTML 파일에 변수나 제어문 등을 포함할 수 있게 하며, 서버에서 실행 시 이 변수를 동적으로 바꿔 클라이언트에게 응답합니다.
- 템플릿과 Tomcat: 템플릿 파일은 서버에서 자바 코드로 변환되어야 하며, 이 과정에서 Tomcat 같은 서블릿 컨테이너가 필요합니다. Tomcat은 템플릿을 컴파일하고 실행하여, 최종적으로 동적인 HTML 파일을 생성하여 클라이언트에게 전송합니다.
■ 5. 내용 정리
- Spring Boot의
static
폴더에 파일을 넣으면, 별도의 설정 없이도 웹 브라우저에서 접근할 수 있습니다.
- Apache는 정적 파일을 처리하고, 동적 컨텐츠 요청은 Tomcat에 위임하여 처리합니다.
- 정적 파일은 고정된 내용을 제공하지만, 템플릿 엔진을 사용하면 동적 데이터를 포함한 응답을 생성할 수 있습니다. 이를 위해서는 Tomcat과 같은 서버가 필요합니다.
Share article