2017-07-30 139 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代码中的某个地方,这个配置文件正在加载。