context-param的作用
1.启动web项目的时候,容器(如:Tomcat)回去读取它的配置文件,web.xml,并且读取两个节点:
< listener>< /listener>
< context-param>< /context-param>
2.接着,容器创建一个ServletContext对象(上下文对象),这个web项目所有模块都共享这个ServletContex对象。
3.容器将< context-param>配置中的值,转换为键值对(Key-value),并存入ServletConext对象中
4.容器创建< listener>中< listener-class>配置的类实例,即是创建监听器 。
5.在监听器中会有contextInitialized(ServletContextEvent args)初始化方法,
在这个方法中可以获得ServletContext对象
ServletContext = ServletContextEvent.getServletContext();
而context-param的值可以通过下面方法获得
ServletContext.getInitParameter("context-param的键");
6.在这个时候,WEB项目还没有完全启动完全,这个动作将比所有的Servlet要早。也就是说,这个时候你对< context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.
7.比如说,在项目启动前,就可以打开数据库连接,可以在< context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接.
context-param和init-param的区别
web.xml里面可以定义两种参数:
-
context-param
application范围内的参数,存放在servletcontext中,在web.xml中配置如下:
<context-param>
<param-name>context1</param-name>
<param-value>avalible during application</param-value>
</context-param>
在servlet里面可以通过getServletContext().getInitParameter(“context1”)得到
-
init-param
servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:
<servlet>
<servlet-name>MainServlet</servlet-name>
<servlet-class>com.wes.controller.MainServlet</servlet-class>
<init-param>
<param-name>param1</param-name>
<param-value>avalible in servlet init()</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
在servlet的init()方法中通过this.getInitParameter(“param1”)取得.