2023. 6. 13. 19:14ㆍSpring Framework/Apache Tomcat Server
Tomcat은 기본적으로 정적 리소스(HTML, CSS, JavaScript, 이미지 등)를 처리할 수 있도록 설계되어 있으며, 추가적인 설정 없이도 클라이언트에게 정적 페이지를 제공할 수 있습니다.
1. 웹 애플리케이션 디렉토리 구조
Tomcat은 웹 애플리케이션을 WAR(Web Application Archive) 형식으로 배포하거나, 특정 폴더 구조로 배포하여 서빙합니다. 정적 페이지는 다음과 같은 디렉토리 구조에서 위치할 수 있습니다:
/webapps/myapp/
├── index.html
├── about.html
└── resources/
├── styles.css
└── scripts.js
webapps
: Tomcat 서버의 기본 배포 디렉토리myapp
: 배포된 웹 애플리케이션의 컨텍스트 루트(context root)- 정적 리소스는 브라우저에서 다음과 같이 접근할 수 있음:
http://localhost:8080/myapp/index.html
http://localhost:8080/myapp/resources/styles.css
2. 정적 리소스 서빙 원리
Tomcat은 DefaultServlet을 통해 정적 리소스를 처리합니다.
DefaultServlet
은 HTML, CSS, JavaScript, 이미지 등의 요청을 처리하는 역할을 합니다.- 별도의 서블릿을 설정하지 않더라도 기본적으로 정적 파일을 서빙함.
예제 요청 처리 과정
| 요청 URL | Tomcat의 처리 방식 |
|---------|----------------|
| http://localhost:8080/myapp/index.html
| /webapps/myapp/index.html
파일을 찾아 반환 |
| http://localhost:8080/myapp/resources/styles.css
| /webapps/myapp/resources/styles.css
파일을 찾아 반환 |
3. DefaultServlet 설정
Tomcat의 conf/web.xml
에는 기본적으로 DefaultServlet
이 설정되어 있습니다. 이 서블릿이 정적 리소스를 처리하며, 특별한 경우가 아니라면 추가적인 설정이 필요하지 않습니다.
기본 설정 예시 (conf/web.xml
의 일부)
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value> <!-- 디렉토리 목록 표시 비활성화 -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
DefaultServlet
이 모든 요청(/
)을 처리하도록 매핑됨listings
값을false
로 설정하여 디렉토리 목록 표시를 비활성화
4. 정적 파일 캐싱 설정
Tomcat에서는 정적 리소스를 캐싱하여 성능을 최적화할 수 있습니다. 이를 위해 DefaultServlet
에 캐싱 관련 파라미터를 설정할 수 있습니다.
캐싱 설정 예시
<init-param>
<param-name>cacheMaxSize</param-name>
<param-value>10240</param-value> <!-- 캐시 최대 크기 (KB) -->
</init-param>
<init-param>
<param-name>cacheTTL</param-name>
<param-value>5000</param-value> <!-- 캐시 유지 시간 (ms) -->
</init-param>
cacheMaxSize
: 캐시의 최대 크기(단위: KB)cacheTTL
: 캐시 유지 시간(단위: ms)
5. 정적 리소스 디렉토리 변경
기본적으로 정적 파일은 webapps/myapp/
내에 위치해야 하지만, 이를 별도의 디렉토리로 변경할 수도 있습니다.
설정 방법 (conf/context.xml
또는 META-INF/context.xml
)
<Context docBase="/path/to/static/resources" path="/myapp" />
/path/to/static/resources
: 정적 리소스가 위치한 디렉토리http://localhost:8080/myapp/
에서 해당 정적 파일 접근 가능
6. Summary
- Tomcat은 기본적으로 정적 리소스를 처리할 수 있음
webapps/myapp/
디렉토리에 정적 파일을 배치하면 자동으로 서빙됨
- 정적 파일 요청은 DefaultServlet이 처리
- 특별한 설정 없이 HTML, CSS, JavaScript, 이미지 등을 제공할 수 있음
- 캐싱을 활용하여 성능 최적화 가능
cacheMaxSize
및cacheTTL
설정 가능
- 정적 리소스의 디렉토리를 변경할 수도 있음
Context
설정을 통해 변경 가능
'Spring Framework > Apache Tomcat Server' 카테고리의 다른 글
Tomcat Context Root (0) | 2024.04.26 |
---|---|
Thread Pool (0) | 2023.09.21 |
Service (0) | 2023.06.06 |
Host (0) | 2023.06.06 |
Context (0) | 2023.06.04 |