티스토리 뷰
반응형
정적 파일 서비스 하기
WEB-INF 안의 내용들은 기본적으로 접근이 불가하다.
예를 들어 css나 js나 image 파일들은 접근이 불가하다. 그런데 jsp파일은 접근이 가능하다. 왜일까?
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
web.xml 파일에 보면 dispatcher의 servlet-mapping의 url-pattern을 / 로 지정했었다.
/* 로 지정하면 jsp파일 까지 접근 불가능하도록 막는 것이고, / 로 지정하면 jsp파일만 요청에 대한 컨트롤러를 찾는다는 뜻이다. 그러니 css나 js, image 폴더의 파일들은 접근할 수 없다.
근데 그렇게 되면 js나 css 등 자원 파일들을 jsp에서 불러오지 못하는 문제점이 생긴다.
그래서 접근을 할 수 있도록 지정할 수 있다.
[ dispatcher-servlet.xml ]
static 폴더 아래 css, js, images 폴더와 각 폴더에 파일들을 넣는다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="/index" class="webprj.IndexController"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--추가-->
<mvc:resources mapping="/**" location="/static/"/>
</beans>
<mvc:resources />를 이용한 방법인데, 이것은 만약 Dispatcher Servlet에서 해당 요청에 대한 컨트롤러를 찾을 수 없는 경우에, 2차적으로 설정된 경로에서 요청을 탐색하여 자원을 찾아내는 것이다. 이렇게 영역을 분리하면 효율적인 리소스관리를 지원할 뿐 아니라 추후에 확장을 용이하게 해준다는 장점이 있다.
즉, 해당 요청에 대한 컨트롤러가 없으면 사용자가 mapping에 지정한 url을 location에 지정한 경로(static 폴더 하위경로)에서 찾을 것이다.
반응형
'백엔드 및 서버' 카테고리의 다른 글
[ Spring ] 예외 처리(@ExceptionHandler, @ControllerAdvice) (0) | 2021.08.28 |
---|---|
[ Spring ] Controller와 관련 Annotation (0) | 2021.02.02 |
[ Spring ] Service 객체 및 DB연결 정보 분리 (0) | 2021.01.27 |
[ Spring ] tiles 설명 및 설정 방법 (0) | 2021.01.27 |
[ Spring ] Dispatcher Servlet 및 ViewResolver 설정 (0) | 2021.01.24 |
댓글