디지털 컨버전스/Spring

[Spring Framework] 이미지 , resources mapping

gimyeondong 2020. 6. 4. 10:06

 

mvc2에서는 웹콘텐츠 안에 이미지폴더

 

Spring에서는?

 

WEB-INF : 외부접속 차단

이미지태그 : 

 


가짜 이름으로 이미지 태그 사용

개발자도구 - 네트워크

새로고침(F5)을 하면 url을 다시 요청

새로고침 할 때마다 한개의 리퀘스트, 한개의 리스폰스 주고 받을 것이라 추정

하지만 실제로는

리퀘스트 3개

 

네이버 리퀘스트는 더 많다

 

 

클라이언트가 리퀘스트를 쏘면 서버는 디스패처 서블릿에 넘긴다.

디스패터 서블렛이 컨트롤러에 물어봄

 

 

이미지태그라는 텍스트를 받아옴

이미지 자체는 서버에만 존재

 

이미지를 요구하는 2번째 리퀘스트 발생

 

 

1. 컨트롤러/라는 페이지 요청

2. 제이쿼리 cdn 요청 (제이쿼리 사이트에 요청)

3. 이미지 요청

 

 

사용자가 원하지 않는 리퀘스트를 보내도록 함

CSRF : 싸이월드 방문자 추적기, 해킹...


이미지를 어디에 넣어야 하고 어떻게 동작하는가?

 

 url을 요청받았을 때 처리 과정

'abc.jpg' 라는 url을 요청받았을 때

경로없이 이름만 쓰면 상대경로로 같은 위치에서 찾는다

'abc.jpg' 는 컨트롤러에 갈 url이 아님

 

리퀘스트맵핑 정보가 없다.

 

servlet-context.xml

 

<annotation-driven/>

 

 

<annotation-driven/> 이 동작하는 바람에 이미지를 리퀘스트 맵핑에서 찾게 됨

그렇다고 지우면 이미지는 찾아지나 리퀘스트앱핑이 동작하지 않음

 

<resources/>

맵핑에 url이 "/resources/**" 로 되어있는 것들은 컨트롤러가 아닌 "/resources/"에서 찾도록

 

클라이언트의 요구 : 외부접근

resources 폴더가 WEB-INF 밖에 존재하는 이유!

 

 

이미지 요청이 컨트롤러로 들어간 상황

 

앞에 /resources/를 넣어주면

못찾아도 컨트롤러 오류 메세지는 나오지 않음

 

제대로 된 경로 ( /resources/img/late.jpg )를 넣어주면

 


로케이션은 실제 존재해야 하지만

mapping 정보는 변경 가능

 

헷갈릴 수는 있지만 편할 수도