static 파일 동적 로딩하기(css,js,image등)

국물빌런·2020년 2월 1일
0

결론부터 말한다.

리소스랑 뷰같은 애들은 이클립스 디렉토리 구조 상으로

src/main/webapp안에 있다. static파일들을 찾으려고 시도할때 최상위 루트가 저기이다.

브라우저 url상으로는 /가 저 디렉토리가 될 것이다.

url을 ex03으로 시작하도록 했다면 ex03이 저 디렉토리가 되겠지.

ex03은 동적으로 표현할 수도 있다.

${pageContext.request.contextPath}

src="/ex03/resources/js/reply.js"

src="${pageContext.request.contextPath}/resources/js/reply.js"

로 표현할 수 있다.


아래는 원문 설명이다.

지금 진행중인 프로젝트는 spring3 프레임워크로, spring mvc로 controller mapping을 하고

tiles2로 view layout을 잡도록 진행중에 있습니다.

그리고 javascript 공통코드는 따로 js파일을 만들어서 작업하고

공통으로 적용해야하는 CSS 역시 따로 css파일을 만들어서 작업을 진행합니다.

그리고 작업의 편의를 위해서 tiles2에서 template으로 쓰이는 jsp파일(어떤 view 파일이든)에

head에 공통 js, css파일들을 박아버리죠.

이러한 환경에서 처음 template 파일이 호출되는 시점에는 js, css파일을 못찾는 경우가 발생하더군요.

경우의 수가 맞는지는 모르겠으나 경험적으로는

메뉴카테고리 등을 클릭하여 tiles view에 definition에 기술된 다른 파일이 호출되어야만

js, css파일들이 로딩되더군요.

따라서 검색을 좀 해보니

resource들을 로드하는 코드를 정적으로 박아버리지말고

동적으로 path를 찾아서 로드가 되도록 하라고 하네요.

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/test.css">

<script type="text/javascript" src="${pageContext.request.contextPath}/js/test.js"></script>

위처럼 말이죠.

아래 링크는 stack overflow에 위의 문제를 다룬 Q&A입니다.

http://stackoverflow.com/questions/10340392/javascript-with-spring-mvc-doesnt-work

출처: https://creator1022.tistory.com/185 [우물안에만 살지말자]

profile
국물을 달라

0개의 댓글