YONG-MIN

(RESTful) 이미지 등 Resource 파일 인식하기 위한 설정

개발언어/Java, Spring 2017. 6. 2. 13:19

Spring3에서 Resource를 사용하는 방법에 대해 포스팅하겠습니다.


RESTful 방식 Spring에서 Resource 사용에 대한 문제점

RESTful 방식으로 Spring을 운영하면 확장자 없이 컨트롤러 호출이 가능합니다. 

그러나 이런 이유 때문에 js/css/img 과 같은 Resource들을 컨트롤러로 인식하는 문제점이 있습니다.

문제점을 보여주기 위해 프로젝트에 Resource들을 관리하기 위한 resource 폴더를 만들고,

테스트용 이미지(test.png)를 넣었습니다.


그리곤, index.jsp에 아래 코드를 입력해보았습니다.

<img src="./resource/test.png" />

결과는 아래와 같이 인식하지 못합니다. (Resource를 컨트롤러로 인식)


Resource 사용을 위한 mvc_config.xml 설정


이 문제점은 mvc_config.xml 에 resource에 대한 mapping 정보를 설정을 하여 해결할 수 있습니다.

WEB-INF>mvc_config.xml을 열어 아래 코드를 입력합니다.

<mvc:resources mapping="/resource/**" location="/resource/"/>

mvc:resource에 대한 태그를 간단히 설명하자면...

{실제경로}를 {사용할 경로}로 연결해서 개발하면서 사용하는 경로는 {사용할 경로} 가 됩니다.

하지만, 굳이 두 경로를 분리해서 사용할 일이 없고, 혼란만 가중되어 동일하게 설정합니다.


아래는 이 설정을 진행한 후의 실행 결과입니다.



보시는 것처럼 정상적인 이미지 출력이 가능합니다.

지금은 경로 단위로 Mapping 설정을 진행하였지만,

응용해서 favicon과 같은 것들은 단일 개체 하나만을 설정할 수 있습니다.

<mvc:resources mapping="/favicon.ico" location="/favicon.ico"/>