스프링 컨텍스트 설정파일과 URI 경로를 제대로 못찾는 삽질



실행 환경

1) IntelliJ 11 에서 프로젝트 생성 : Maven Plugin
2) pom.xml에 maven war plugin 추가

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <webXml>web\WEB-INF\web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>

3) Add Framework Support 에서 Tomcat 추가.



문제

1) spring의 servlet 설정파일을 못찾음

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]

원인 : Tomcat 이 자동생성해주는 web.xml 경로는 web/WEB-INF/web.xml 임.
그런데 maven-war-plugin 이 인식하는 디폴트 경로는 src/main/web/WEB-INF/web.xml 임
(http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html)

고로 다음과 같이 변경해 줘야 함.


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <webResources>
            <resource>
                <directory>web</directory>
            </resource>
        </webResources>
    </configuration>
</plugin>



2) 실행하면 루트(/) 가 매핑되지 않음


WARNING: No mapping found for HTTP request with URI [/WEB-INF/views/index.jsp] in DispatcherServlet with name 'dispatcher'

원인 : web.xml 에서 다음과 같이 서블릿을 매핑했었음.
url-pattern 을 /* 가 아닌 / 으로 수정해야 정상 동작함

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


댓글

이 블로그의 인기 게시물

pandas.read_csv() 에서 왠만하면 컬럼타입을 지정하자