티스토리 뷰

webapp/images 폴더 아래에 맞는 이름의 png 파일을 두었는데 읽어오질 못한다 왜 그럴까?

 

서버를 키고 페이지를 브라우저에 띄었다면

localhost:8080/images/logo_footer.png 이런 경로를 통해 파일을 가져오는 것으로 된다

 

이유는 기본적으로 스프링이 정적인 파일을 불러오는 것을 막아뒀기 때문인데 이미지나 html 등을말하는데

 

jsp같은 파일을 사용가능하게 열어두고있다

 

 

 

 

만약 webapp폴더 어래에 test.jsp 파일을 두고 ctrl+f11을 눌러 열어본다면 잘열리게 된다.

 

하지만

 

이미지파일은 logo.png를 webapp폴더 아래에 두고 열면 열리지 않는다

 

여기서 우린 처음 리퀘스트를 받는 frontController 즉 DispatcherServlet을 확인해 볼 필요가있는데

 

web.xml에 설정을 보게되면

 

<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>

 

여기 url-pattern에 '/'의 의미는 정적인 파일을 모두 막고 jsp는 허락한다는 의미로 사용된다.

 

그럼 어떻게 불러와야 할까?

디스패처를 설정하듯 사용한다는 표시를 해주면 되는데

 

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

이렇게 하지만 일반적으로 사용하는 방식은

 

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

이렇게 resources라는 폴더를 만든 뒤에 그 아래의 모든 파일을 사용한다고 해두면

 

css나 js도 함께 넣어 한번에 사용할 수 있게 된다.

 

이제 설정을 해보자 Dispatcher-servlet.xml에 오게 되면

 

<mvc: 설정을 하고싶지만

 

상단에 xmlns="http://...../beans"로  이 처리기는 bean만 설정하게 되어있기에

 

새로운 처리기를 불러와야만 한다.

 

xmlns를 복사한 뒤에 beans는 mvc로 바꿔주고 xmlns에는 xmlns:mvc로 바꿔주고

 

 

xsi:schemaLocation=안에 http와 https 의 url을 복사해 같은 곳에 복사 붙여넣기 해준후 beans로 해당 되는 곳은 모두 mvc로 바꿔주면

xmlns:mvc="http://www.springframework.org/schema/mvc"

        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <bean id="/index" class="com.javaex.controller.IndexController" />  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

<
</beans>

 

이런 모양이 되는데

 

 

<를 친 뒤에 ctrl + space를 누르면 많은 태그가 생긴 것을 볼 수 있다.

 

mvc에 관련된 스키마 파일을 불러 온 것이다.

 

여기서 우리가 알고 넘어가야 하는 것은 

mvc를 태그를 쓸때에 

 

<http="http://www.springframework.org/schema/mvc"> 이런식으로 써야하는 것을 방지하기 위해

xmlns:mvc 이렇게 이름을 달아서 줄여서 사용 할 수 있게 해준다.

 

오늘 우리가 사용할 것은 mvc:resources 태그니 가져온다.

 

 

여기서 mapping은 사용자가 원하는 url을 보냈을때에 만약 /resources/a.jpg 이렇게 보낼 경우

 

프로그램이 찾아주는 곳은 location이 된다 만약 location이 /resources/라면 그 경로 폴더에서

파일을 찾게 된다.

 

그럼 우리는 여러 폴더를 한번에 보관하려하기 때문에

 

/resources/css/~

/resources/js/~

/resources/images/~

 

를 모두 다 라는 표현으로

 

/resources/**

이렇게 표현하면 된다.

mvc 리소스 경로를 정해주고 나니 이렇게 경로를 통해 불러오는 것이 가능해졌다.

 

 

다만 우린 이제 어떤 경로를 정해 줄 때에 모두 resource/뭐시기/뭐시기.css 라는 식으로 

경로를 지정해야하는데.. 너무 귀찮은 작업이다. 이 부분을 편하게 만들어보자.

이렇게 들어오는 모든 정적 url을 static폴더에서 찾게하고 (아이고 오타났네 location="/static/")

 

폴더안에 원하는 모든 정적파일을 넣어준다.

 

url경로는 보면 잘 되는 것이 확인된다.

 

img 경로를 이렇게 해둔 jsp파일을 불러와보겠다. 과연될까?

 

짠 잘 나오는 것이 확인된다!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함