[spring] 웹 서버에서 img를 로드하지 못하는 문제 해결

2023. 7. 24. 13:49프로그래밍/웹 개발

img 태그를 작성할 때 src(경로 설정) 속성값에 {본인의 프로젝트 경로(context path) } /resources/img/logo.png와 같이 작성했을 때 서버에서 계속 이미지를 로딩하지 못하는 문제가 발생했다. 우선 컨트롤러에서 print문을 이용해 ServletContext의 getRealPath메서드로 서버가 정적 리소스에 접근하는 경로를 확인해봤을 때 target폴더의 snapShot폴더로 접근하는 것을 알 수 있었다.

 

해당 폴더 아래에는 정상적으로 resources 폴더가 있음에도 img태그가 인식되지 않았고 심지어 직접 URL을 통해 접근해도 jsp파일 이외의 정적파일에는 접근할 수 없는 문제가 발생했다. 아마도 spring 프로젝트는 dispatcherServlet을 통해 사용자의 요청을 처리하는데 이 때 jsp파일 이외의 정적 리소스는 처리하지 않는 것이 아닌가 하는 의심으로 이어졌다. 따라서 이미지 파일을 매핑해야한다는 생각에 다음과 같이 servlet-context.xml 파일에 코드를 추가했다. 

<!-- 정적자원 매핑 -->
<mvc:resources mapping="/resources/**" location="/resources/"/>

 

 

위 코드를 추가한 후에 정상적으로 해결이 됐지만 아직까지 왜 .jsp파일이외의 정적파일에는 접근하지 못했는지는 의문이다. 

혼자 생각해보자면 dispathcerServlet은 확장자명이 .jsp인 파일만 인식하고 url요청을 받아주기 때문이라고 생각할 수도 있다. 

따라서 위와 같이 정적 파일들이 존재하는 폴더 경로를 따로 매핑해야하는 것 같다.