티스토리 뷰

반응형

정적 파일 서비스 하기

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 폴더 하위경로)에서 찾을 것이다.

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday