티스토리 뷰
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파일을 불러와보겠다. 과연될까?
짠 잘 나오는 것이 확인된다!
'dev_공부일지 > Spring Framework' 카테고리의 다른 글
Spring Tiles 설정에 Wildcard 이용하기 (쉽게 바꾸기) (0) | 2021.06.12 |
---|---|
Spring tiles 레이아웃 페이지 만들기와 Tiles 라이브러리 설정하기 (0) | 2021.06.11 |
spring viewResolver 설정하기 (0) | 2021.05.30 |
Spring Dispatcher 서블릿을 프론트컨트롤러로 설정하기 (0) | 2021.05.29 |
Spring MVC model2 방식 환경설정하기 (0) | 2021.05.24 |
- Total
- Today
- Yesterday
- 리터럴
- SpringBoot
- JPA
- 향해99
- Intercepter
- Java
- 백엔드 개발자 공부
- filter
- thymleaf
- React
- rejectValue
- 스프링공부
- hypertexttransferprotocol
- 예외처리
- HTTP
- ArgumentResolver
- 향해플러스
- reject
- 컨트
- 백엔드 개발자 역량
- exception
- 로그인
- 항해플러스
- 항해99
- react실행
- 향해플러스백엔드
- jpa api
- 인터셉터
- 스프링부트
- BindingResult
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |