1.web项目的配置文件:WEB-INF/web.xml
2.spring在web下的入口在配置文件web.xml的监听器中:
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring/applicationContext.xml</param-value>
所以在启动Web容器时,自动装配spring applicationContext.xml的配置信息,因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。
3.ServletContextListener接口方法:
publicclass ContextLoaderListener implements ServletContextListener实现了contextDestroyed, contextInitialized这两个方法
4.Spring框架由此启动, contextInitialized也就是监听器类的main入口函数
所有实现都隐藏在ContextLoader类里
ServletContext 被Servlet 程序用来与 Web 容器通信。例如写日志,转发请求。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。因为Context可以用来保存资源并且共享,所以我所知道的 ServletContext 的最大应用是Web缓存—-把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。
ServletContextListener 是ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。
在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。