web.xml可以设定两种参数
1.在servlet里面,或者filter里面有参数设置的地方,例如
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>HelloWorldExample</servlet-class>
<init-param>
<param-name>my</param-name>
<param-value>you</param-value>
</init-param>
</servlet>
这里面的
参数设定,是针对HelloWorldExample这一个servlet设定的,我们可以在HelloWorldExample类里面通过
System.out.println(this.getInitParameter("my"));;来获取该servlet的参数。
2.就是全局性的参数,针对所有的servlet都有效,设置方式如下,在web.xml里面
<!-- 全局参数设置测试 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/META-INF/applicationContext*.xml </param-value>
</context-param>
这个参数可以再所有的servlet里面通过
System.out.println(getServletContext().getInitParameter("contextConfigLocation"));
来获取全局参数。
*************************************************************************************************************************
参考
同时可以记一下。
web.xml中context-param,listener,filter,servlet加载顺序
不同类别加载顺序:先 context-param
然后 listener
接下来 filter
最后 servlet
。
同类别的加载顺序:根据对应的mapping的先后顺序
。
注意:定义必须在对应的mapping之前
。
http://blog.csdn.net/lwzcjd/archive/2008/10/14/3072971.aspx
**********************************************************************************************************
servlet实例化,filter
实例化
filter是在容器启动的时候,就被实例化,并执行其init方法
而servlet默认(<load-on-startup>不写,或者为负数)情况下是在被请求的时候,容器才将其实例化,并执行其init方法。
以上这种情况可以通过<load-on-startup>1</load-on-startup>方式改
变,filter没有这个属性(我做的时候没有看见)在servlet里面设置了这个属性(必须是正数,负数的话也不会初始化),则该servlet会和
filter一样,在容器启动的时候被实例化,并执行其init方法。
其中<load-on-startup>的值越大,则实例化的优先级越低,即这个值好像是以ms计时的,越小实例化的
就越快。但是即使servlet设置了<load-on-startup>属性,即容器启动时实例化,filter还是会在所有
servlet实例化之前就实例化。
既然filter没有<load-on-startup>属性,那么如果有多个filter,他们的实例化顺序是什么样的呢?
默认情况下,web.xml最下面的filter最先实例化,也就是最先执行最下面的filter的init方法,这个init方
法和具体调用的不一样。具体调用时执行doFilter方法,这个方法的执行顺序是,按照<filter-mapping>的顺序执行的。
以上除参考部分,都是练习所得,可能有不正确的地方,还望指正。