1、在启动web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener> 和<context-param>
2、接着容器会创建一个ServletContext(上下文),应用范围内即整个web项目都能使用这个上下文。
3、接着容器会将读取到的<context-param>转化为键值对,并交给ServletContext
4、容器创建<listener></listener>中的类实例,即创建监听(备注:lisntener定义的类可以是自定义的类,但是必须要继承ServletContextListener)。
5、在监听的类中会有一个contextInitialized(ServerletContextEvent event)初始化方法,在这个方法中可以通过event.getServketContext().getInitParameter("contextConfigLocation")来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event)销毁方法。用于变比用用前释放资源,比如关闭数据库连接。
6、得到这个context-param的值之后,你就可以做一些操作了。注意,这个时候你的web项目还没有完全启动完成,这个动作会比所有的Servlet都要早。
由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener >> filter >>servlet
如何使用:
在页面中
${initParam.contextConfigLocation}
Servlet中
String paramvalue = getServletContext().getInitParameter("contextConfigLocation");