Spring 3.0의 새로운 REST 방식 컨트롤러를 이용하기 위해서 가장 간단한 방법으로는 dispatcher servlet을 다음과 같이 맵핑을 하는 방식을 택하였다.
1: <servlet>
2: <servlet-name>dispatcher</servlet-name>
3: <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
4: </servlet>
5: <servlet-mapping>
6: <servlet-name>dispatcher</servlet-name>
7: <url-pattern>/</url-pattern>
8: </servlet-mapping>
이 맵핑의 큰 문제점 중 하나는 개발할 당시에는 보통 apache + tomcat 형태를 이용하지 않고 tomcat만으로 구성하여 개발을 하는데 static한 파일들을 모두 dispatcher servlet이 가져간다는 문제가 있다. 그래서 검색을 좀 해보니 다음과 같은 해결책이 있었다.
1: <servlet-mapping>
2: <servlet-name>default</servlet-name>
3: <url-pattern>*.css</url-pattern>
4: </servlet-mapping>
5: <servlet-mapping>
6: <servlet-name>default</servlet-name>
7: <url-pattern>*.js</url-pattern>
8: </servlet-mapping>
9: <servlet-mapping>
10: <servlet-name>default</servlet-name>
11: <url-pattern>*.jpg</url-pattern>
12: </servlet-mapping>
13: <servlet-mapping>
14: <servlet-name>default</servlet-name>
15: <url-pattern>*.png</url-pattern>
16: </servlet-mapping>
이런 식으로 필요한 확장자에 대해서 default servlet으로 처리하도록 하면 된다. 혹시나 default servlet의 존재에 대해서 궁금하다면 default servlet의 정의는 %TOMCAT_HOME%\conf\web.xml에 정의되어 있다.
http://www.gridshore.nl/2009/06/26/serving-static-files-in-google-app-engine-development-edition/
답글삭제여기 보니 <url-pattern>에 그냥 *.css,*.js 와 같이 ,로 구분하여 맵핑도 가능합니다.
막상 해보니 , 로 구분해서는 안되네요. 그래서
답글삭제<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
이런 식으로 수정.