我创建了一个简单的Hello World Spring MVC项目。
我在web.xml中添加了以下行
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value>
</init-param>
我的代码没有这些代码。我不明白添加这些行的目的。任何人都可以用简单的语言向我解释它的用法。
答案 0 :(得分:1)
默认情况下,Spring会查找以下文件来加载其Web上下文:
{my-sevlet-name}-servlet.xml
所以你似乎在命名你的春天DispatcherServlet
&#39;春天&#39;。在这种情况下,Spring只会加载spring-servlet.xml
,你提到的行根本不会影响应用。
答案 1 :(得分: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配置,您需要有一个名为&#39; / WEB-INF / spring -servlet.xml&#39;它将自动被选中。
但是对于不同的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 强>)
答案 2 :(得分:0)
初始化参数contextConfigLocation告诉Spring在哪里加载配置文件。如果它在没有web.xml中的代码的情况下工作意味着你的java代码中的某个地方正在加载这个配置文件。