java.io.FileNotFoundException:无法打开ServletContext资源[/WEB-INF/SpringDispatcher-servlet.xml]

时间:2016-04-28 14:09:10

标签: spring spring-mvc servlets configuration-files

当我启动我的应用程序时,我收到此错误

java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/SpringDispatcher-servlet.xml]
 nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/SpringDispatcher-servlet.xml]

与此同时,我没有像SpringDispatcher-servlet.xml这样的文件,我的web.xml或我的WEB-INF文件夹中定义的mvc-dispatcher-servlet.xml文件也没有。

web.xml文件

<context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>SpringDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

mvc-dispatcher-servlet.xml文件

<context:component-scan base-package="aish.vaishno.musicstore.controller" />

    <mvc:annotation-driven />

    <bean
     class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>

请问如何找到此文件

/WEB-INF/SpringDispatcher-servlet.xml

请问我出错了什么?

3 个答案:

答案 0 :(得分:0)

Spring正在您的Web项目中查找SpringDispatcher-servlet.xml,因为它无法找到它,它会抛出异常。

您可以像这样覆盖调度程序servlet xml文件 - 提供空白参数。

 <servlet>
    <servlet-name>SpringDispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
  </servlet>

答案 1 :(得分:0)

在web.xml中定义Dispatcher servlet时,spring期望Web应用程序上下文名称为/ WEB-INF /下的Disptacherservletname-servlet.xml。 在你的情况下它应该是SpringDispatcher-servlet.xml而不是mvc-dispatcher-servlet.xml

或者您可以使用contextConfigLocation参数来遵循您自己的命名约定。

<servlet>
    <servlet-name>SpringDispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </init-param>
  </servlet>

答案 2 :(得分:0)

在您的web.xml中,您已将servlet定义为

<servlet>
    <servlet-name>SpringDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

</servlet>

因此,您需要在 WEB-INF 文件夹中创建名为 SpringDispatcher-servlet.xml 的文件。这就是它的工作原理。如果将servlet-name更改为dispatcher,则文件名应为dispatcher-servlet.xml。

SpringDispatcher-servlet.xml包含spring上下文的定义。看一下这个tutorial