[TIL] JSP에서 정적 리소스 서빙

2025-03-13 TIL

📝 TIL (Today I Learned)
🔗 원본 이슈: #27
📅 작성일: 2025-03-13
🔄 최종 수정: 2025년 04월 08일


🍀 새롭게 배운 것

  • JSP에서 정적 리소스 서빙할때 알아야 할 것이 정확히 무엇이 있는지 알아보았다.

📄 JSP (Java Server Pages)

  • HTML + Java 코드 혼합으로 동적 웹 페이지를 생성하는 기술.
  • 백엔드에서 view(화면) 역할을 할 때 사용됨.
  • 최근에는 Thymeleaf 같은 템플릿 엔진으로 대체되기도 하지만, JSP는 여전히 많은 레거시 시스템에서 사용 중.

🖼️ 정적 리소스 서빙 (Serving Static Resources)

✅ 정적 리소스란?

  • 서버에서 별도 처리 없이 그대로 내려주는 파일들
    👉 이미지, CSS, JavaScript, 폰트 등

✅ JSP에서 정적 리소스를 서빙할 때 알아야 할 점

  1. 위치

    • 일반적으로 /webapp 또는 /resources 하위에 위치
    • 예:
      /webapp
        └── /css
        └── /js
        └── /images
      
  2. 접근 경로

    • JSP에서 링크를 걸 때는 절대 경로 or 상대 경로를 정확히 써야 함.
    • 예:
      <link
        rel="stylesheet"
        href="${pageContext.request.contextPath}/css/style.css"
      />
      <script src="${pageContext.request.contextPath}/js/script.js"></script>
      
  3. web.xml 설정 (보통 기본적으로 설정되어 있지만 알아두면 좋음)

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/resources/*</url-pattern>
    </servlet-mapping>
    
  4. 서블릿이 아닌 파일은 직접 서빙됨

    • JSP 같은 동적 리소스는 Servlet에서 처리
    • 정적 리소스는 ServletContainer(Tomcat 등)가 자동으로 처리

⚠️ 주의할 점

  • 정적 리소스를 JSP 내부에 두지 말기
    • 예: WEB-INF/views 안에 넣으면 브라우저에서 접근 못 함 (보안상 보호된 경로임)
  • 브라우저 캐싱 문제 있을 수 있음 → 버전 넘버링 (style.css?v=1.0) 같은 기법 사용

📌 요약

항목설명
정적 리소스서버에서 처리 없이 그대로 전달하는 파일 (JS, CSS, 이미지 등)
저장 위치보통 webapp 폴더 내 /css, /js, /images 등 폴더
접근 방법${pageContext.request.contextPath}/css/style.css 형식으로 경로 지정
서빙 주체Tomcat 같은 WAS(Web Application Server)가 자동 서빙
주의사항WEB-INF 폴더 안에 넣으면 안 보임, 경로 설정 정확히 해야 함