2017-07-30 78 views
0

我創建了一個簡單的Hello World Spring MVC項目。web.xml中與contextConfigLocation相關的混淆

我增加了以下線在我的web.xml

<init-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/spring-servlet.xml</param-value>   
</init-param> 

我的代碼工作沒有這些線路。我不明白添加這些行的目的。任何人都可以用簡單的話來解釋我的用法。

回答

1

在初始化DispatcherServlet時,請在Web應用程序的WEB-INF目錄中查找名爲 [servlet-name] -servlet.xml的文件,並創建在此定義的bean(覆蓋定義的任何bean的定義全球範圍內的同名)。

例如,

<web-app> 
    <servlet> 
    <servlet-name> 
     spring 
    </servlet-name> 
     <servlet-lass>org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name> 
     spring 
    </servlet-name> 
    <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 
</web-app> 

隨着上述servlet配置,你需要有一個叫做 '/ WEB-INF/春天 -servlet.xml後綴' 文件,它會自動回升。

但是,對於不同的servlet名稱和配置文件名或位置,我們必須在初始化Dispatcher servlet時提供文件名和位置,如下所示。

<web-app> 
    <servlet> 
     <servlet-name>SpringController</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>SpringController</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 
</web-app> 

(以下servlet名稱是SpringController和配置文件名是爲spring-servlet.xml。甚至,在這裏你可以爲你的例子配置文件,my_spring_mvc_configurtaion.xml使用任何名稱

+0

@Joginder Pawan在我看來,我是在12小時前提出了相同的答案:) –

+0

@Dmittry Senkovich,你早些時候回答,但它不是問題的實際問題。他實際上想要知道中contextConfigLocation的重要性。 –

+0

我的意思是一切正常,哥們,我不清楚那麼) –

1

默認情況下,春季查找下列文件加載它的網頁背景:

{my-sevlet-name}-servlet.xml 

所以好像你叫你的Spring的DispatcherServlet「春天」。在這種情況下,Spring只需加載spring-servlet.xml,並且您提到的這些行根本不會影響應用程序。

0

初始化參數contextConfigLocation告訴Spring在哪裏加載配置文件。如果它沒有在web.xml中的代碼工作,意味着你的Java代碼中的某個地方,這個配置文件正在加載。