配置DispatcherSerlvet
为了保证DispatcherServlet
能正常工作,首先,需要在web.xml中添加配置:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
由于SpringMVC框架是基于Spring框架的,就需要加载Spring的配置文件,在DispatcherServlet
类的父类FrameworkServlet
类中,定义了名为contextConfigLocation
属性,该属性的值就应该是Spring配置文件的路径,一旦指定了该属性值,当DispatcherServlet
被创建时,就会自动读取所配置的文件!
所以,需要在<servlet>
中补充配置以上contextConfigLocation
属性的值:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
这个spring.xml还应该在项目启动时就被读取,使得项目启动就加载Spring的环境,所以,还应该将这个DispatcherServlet
配置为启动即初始化:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
经过配置后,由于存在<load-on-startup>1</load-on-startup>
,所以,当Tomcat启动时,就会初始化DispatcherServlet
,由于配置了初始化参数(<init-param>
系列节点),所以,初始化后就会立即加载spring.xml文件!
接下来,可以检验以上配置是否正确。先在spring.xml中添加组件扫描:
<context:component-scan base-package="cn.tedu.spring" />
然后,在组件扫描的包中创建任意类,并在类的构造方法中添加输出语句:
package cn.tedu.spring;
import org.springframework.stereotype.Component;
@Component
public class User {
public User() {
System.out.println("User.User()");
}
}
因为Tomcat启动时,会加载spring.xml,就会执行组件扫描,在扫描的包中找到User
类,同时,因为User
添加了@Component
注解,所以,Spring框架就会创建User
类的对象,导致User
类的构造方法被执行,其中的输出语句就会被执行!
简单来说,就是Tomcat启动时,可以看到以上构造方法中输出的内容!