2016-04-30 16 views
1

すでにweb.xmlにcontext-param内の[/WEB-INF/config/dispatcher-servlet.xml]という名前のディスパッチャサーブレットの場所が定義されています[/WEB-INF/dispatcher-servlet.xml]を探してください。dispatcher-servlet.xmlの場所が変更されていません

これは、[/WEB-INF/config/dispatcher-servlet.xml]と[/WEB-INF/dispatcher-servlet.xml]にdipatcher-servletを配置しているときに機能します。

どのようにこのように動作していますか?現在の場所を[/WEB-INF/config/dispatcher-servlet.xml]に変更すると、なぜこの[/WEB-INF/dispatcher-servlet.xml]の場所を検索するのでしょうか?あなたはこのようなあなたのディスパッチャサーブレットを定義している

May 01, 2016 3:55:49 AM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'dispatcher' 
2016-05-01 03:55:49 INFO DispatcherServlet:488 - FrameworkServlet 'dispatcher': initialization started 
2016-05-01 03:55:49 INFO XmlWebApplicationContext:578 - Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Sun May 01 03:55:49 IST 2016]; parent: Root WebApplicationContext 
2016-05-01 03:55:49 INFO XmlBeanDefinitionReader:317 - Loading XML bean definitions from ServletContext resource [/WEB-INF/dispatcher-servlet.xml] 
May 01, 2016 3:55:49 AM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml] 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 

答えて

0

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

ので、デフォルトでは、それがディスパッチャサーブレットを探します

web.xmlの

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

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

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

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/config/dispatcher-servlet.xml, 
      /WEB-INF/config/spring-security.xml, 
      /WEB-INF/config/database-config.xml 
     </param-value> 
    </context-param> 

エラーファイル(dispatcher-servlet.xml)をクラスパスに追加します(サーブレット名には「-servlet.xml」が追加されます)。

dispatcher-servlet.xmlを定義しましたが、これを/ WEB-INF/config /の下に置いています。したがって、ディスパッチャサーブレットxmlファイルにこの場所を指定します。次の設定はあなたのために働くはずです。

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/conf/dispatcher-servlet.xml 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
0

ケース1:あなたはINIT-PARAMまたはコンテキストのparamとサーブレット名を定義していない場合は

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

=> web.xmlの負荷は、それがロードされます/ WEB-INFディスパッチャですデフォルトでは/dispatcher-servlet.xmlです。init-paramで定義する必要はありません

ケース2:ディスパッチャサーブレットの場所を変更する場合は、 =>そのパスをinit-param。init-paramがこのxmlをロードするため

関連する問題