未找到Dispatcher servlet。 mvn安装失败,找不到文件

时间:2016-05-25 23:13:58

标签: spring maven spring-mvc servlets

我使用spring mvc进行简单的弹簧项目。我已经更改了调度程序servlet名称,但是mvn install失败并出现错误。

错误堆栈跟踪:从ServletContext资源[/WEB-INF/dispatcher-servlet.xml]解析XML文档的IOException;嵌套异常是java.io.FileNotFoundException:无法打开ServletContext资源[/WEB-INF/dispatcher-servlet.xml]

1)的web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 id="WebApp_ID" version="3.0" >

 <display-name>Order Activation Snapshot</display-name>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <!-- Loads Spring Security config file -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
         <param-value>        
            /WEB-INF/spring-security.xml,
            /WEB-INF/data-source-cfg.xml,
            /WEB-INF/mvc-dispatcher-servlet.xml
        </param-value>

    </context-param>


    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

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


    <!-- Spring Security Filter -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

2)MVC-调度-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
          http://www.springframework.org/schema/beans    
          http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-4.1.xsd">

      <context:component-scan base-package="org.o7planning.tutorial.springmvcsecurity.controller" />
      <context:annotation-config />

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

    </beans>

不确定我在这里缺少什么。

File structure in my code base

1 个答案:

答案 0 :(得分:0)

您的调度程序servlet名称应该是唯一的。 您可能会在代码中的某个位置告诉您的编译器/ Intepreter(这里没有看到它),以便在 / WEB-INF / 中查找 dispatcher-servlet.xml 。但似乎您使用 mvc-dispatcher-servlet.xml 为您的调度程序命名。结果可能是 java.io.FileNotFoundException 异常。 两件事:您可以前往 dispatcher-servlet.xml 所在的位置,并将其替换为 mvc-dispatcher-servlet.xml ,或者执行以下操作:

替换您的调度程序servlet名称:

mvc-dispatcher-servlet

dispatcher-servlet

无处不在。

在需要的地方添加 .xml 扩展名 dispatcher-servlet

例如,在 web.xml 中,您可以进行以下更改:

...

<!-- Loads Spring Security config file -->
<context-param>
    <param-name>contextConfigLocation</param-name>
     <param-value>        
        /WEB-INF/spring-security.xml,
        /WEB-INF/data-source-cfg.xml,
        /WEB-INF/dispatcher-servlet.xml <!--changed here -->
    </param-value>

</context-param>


<!-- Spring MVC -->
<servlet>
    <servlet-name>dispatcher</servlet-name> <!--changed here -->
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name> <!--changed here -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

...

请注意。我评论了我改变的线条。