web.xml的读取顺序

         由于项目中需要区分一下监听器的加载顺序,动手查了一下资料,下面有些为转载的

web.xml中主要配置context-param,listener,servlet,filter,这四种类型的读取启动顺序与在web.xml中的位置无关,容器启动时首先读取context-param,供listener,filter,servlet使用,然后读取listener,启动相应的监听,

具体优先级为context-param>listener>filter>servlet.

        对于filter,配置节点与它们出现的顺序是有关的,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。  servlet在这点 同 filter 类似 ,但启动顺序与它们出现的顺序是有关的并不完全匹配,load-on-startup 参数指定了sevlet呗加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该 servlet被调用的时候,加载这个servlet 。如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。 在servlet的配置当中,5的含义是: 标记容器是否在启动的时候就加载这个servlet。 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。 正数的值越小,启动该servlet的优先级越高。 对于listener,配置节点与它们出现的顺序是有关的。

     

你可能感兴趣的:(web.xml,servlet,filter,listener,context-param)