web.xml配置文件
<web-app xmlns="http://www.sychzs.cn/xml/ns/javaee"
xmlns:xsi="http://www.sychzs.cn/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sychzs.cn/xml/ns/javaee http://www.sychzs.cn/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>ssmdemodisplay-name>
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>/WEB-INF/spring/spring-context.xmlparam-value>
context-param>
<listener>
<description>启动spring容器description>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListenerlistener-class>
listener>
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
<init-param>
<param-name>forceEncodingparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<servlet>
<servlet-name>spring-mvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>/WEB-INF/spring/spring-mvc.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>spring-mvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
1.Web服务器(如Tomcat)启动
2.Tomcat读取server.xml配置文件,加载里面配置的Web应用,为每个应用创建一个全局上下文环境ServletContext(ApplicationContextFacade);
3.Tomcat读取web.xml配置文件,开始按顺序加载(context-param、listener、filter、servlet);
4.获取context-param节点信息,保存到ServletContext中(值为Spring配置文件的位置);
5.获取listener节点信息,创建Listener实例集合(开始监听),其中的ContextLoaderListener监听器就是用来完成Spring容器初始化的。
6.ContextLoaderListener监听触发,完成Spring容器(XmlWebApplicationContext)的初始化;
创建Spring容器,通过ServletContext.getinitialParameter(“contextConfigLoaction”)从ServletContext中获取Spring配置文件的位置;
读取Spring配置文件信息,将相关Bean加载到Spring容器中。
7.Spring容器加载完成,将容器保存到ServletContext中;
8.获取filter节点信息,创建Filter实例集合,保存到ServletContext中;
9.获取servlet节点信息,创建Servlet实例集合,其中的DispatcherServlet就是用来完成SpringMVC容器(XmlWebApplicationContext)初始化的;
根据servlet节点中的servlet-class创建相应的Servlet;
其中DispatcherServlet的初始过程,进行SpringMVC容器初始化;
读取该servlet节点中的SpringMVC配置文件信息,将相关Bean加载到SpringMVC容器中;
设置Spring容器为SpringMVC容器的父容器。
当执行SpringMVC容器的getBean方法在自己的context中找不到对应的bean,则会在父容器Spring容器的context中找对应的bean。
10SpringMVC容器初始化完成,将容器保存到ServletContext中。
www.sychzs.cn
(其中xxx为servlet-name节点的值)为key的key-value形式存入到ServletContext.context.attributes属性中。至此,SSM项目启动完成。