web.xml中四种配置参数的执行顺序是:context-param ---> Listener ---> Filter ---> Servlet;
1. web容器首先会读取位于web.xml中的两个节点<context-param>和<listener>;
2. 然后去创建一个ServletContext上下文,被所有的组件共享;
3. 将web.xml中配置的<context-param>转化为键值对,存放于servletContext中;
4. web容器负责实例化监听器并注册监听器以用来监听各种事件,由于可以配置多个监听器,所以监听器本身的注册及执行也是有顺序的:
web容器是根据监听器实现的接口以及在web.xml中的顺序注册的,在web应用程序执行的时候,监听器执行的顺序和它们的注册顺序是一致的;在容器关闭的时候,监听器是按照和注册顺序相反的顺序被通知调用;监听器可以按照如下进行分类:
Object
Event
Listener Interface and Event
Class
Web context
|
Initialization and destruction
|
javax.servlet.ServletContextListener
and
ServletContextEvent
|
Attribute added, removed, or replaced
|
javax.servlet.ServletContextAttributeListener
and
ServletContextAttributeEvent
|
Session
|
Creation, invalidation, activation, passivation, and timeout
|
javax.servlet.http.HttpSessionListener
, javax.servlet.http.HttpSessionActivationListener
, and
HttpSessionEvent
|
Attribute added, removed, or
replaced
|
javax.servlet.http.HttpSessionAttributeListener
and
HttpSessionBindingEvent
|
Request
|
A servlet request has started being processed by web components
|
javax.servlet.ServletRequestListener
and
ServletRequestEvent
|
Attribute
added, removed, or replaced
|
javax.servlet.ServletRequestAttributeListener
and
ServletRequestAttributeEvent
|
监听器是设计模式中观察者模式的一种应用,容器维护了对某种事件的一个监听器列表,当事件被触发的时侯,响应的监听器就会被按一定的顺序调用. Spring中的ContextLoaderListener实现了ServletContextListener,在ServletContext初始化的时候,就会去初始化webapplicationcontext,从而完成spring IOC中bean的注册;
5. web容器通过调用Filter的init方法初始化Filter,Filter主要用于在请求被处理之前和之后拦截并作出响应;Filter可以通过<filter-mapping>对特定的资源进行处理;当一个请求到来时,针对某种资源的filter会被组织成一个filterChain,filter可以通过调用filterChanin.dofilter()调用后面的filter;如果在一个filter的doFilter方法中调用filterChain.doFilter(),那么filterChian.doFilter()之后的代码将会在response返回的时候才会被执行;如下段代码,当程序进入到filterChain.doFilter(request, response)时,下一个filter的doFilter方法会被调用,如果下一个filter的doFilter方法中也有filterChain.doFilter(request, response),将会继续对下下一个filter的doFilter方法,直到针对当前请求的最后一个filter,然后进入Servlet进行应用逻辑的处理,待处理结束后,会按照刚才调用filter相反的顺序逐一执行filterChain.doFilter(request, response)之后的代码.
以下是在我的应用程序中的输出:
6. 在filterChain中的filter方法执行完毕的时候,相应的servlet会被调用,sevlet可以通过<servlet-mapping>进行配置使其对特定的url进行处理;在sevlet处理完成后,应用程序可能会再次进入filter,执行某个filter内doFilter()方法中filterChain.doFilter()之后的代码.
分享到:
相关推荐
光伏并网微逆变器核心技术小析.pdf光伏并网微逆变器核心技术小析.pdf
光伏并网微逆变器核心技术小析.docx光伏并网微逆变器核心技术小析.docx
滞销楼盘问题小析.doc
大学健美操教育的问题与路径小析.doc
美术中的信息化应用小析(全文).docx
小析绩效审计发展态势.doc
小析火力发电企业物流成本管理.doc
渗透测试和安全测试入门相关,扫盲安全测试;安全事,无大小;也许你的一个提醒,可以挽回公司的巨大损失
[原创]uc-OS-II内核小析 - uCOS-II - 电子开开发
论文研究-计算约简的差别矩阵简化算法...实际应用中给出一种简化算法:一边从信息表中提取差别元素构成合取范式,一边用分配律、吸收律作逻辑公式的等价变换,直接得到最小析取范式.本章给出反例,说明该简化算法不总成立.
石油IC卡在使用中的安全性及其附加价值小析,堵晶晶,,1920年,美国吉尔巴克(GILBARCO)公司生产了世界第一台机械燃油加油机;1974年,推出了世界第一台电脑加油机,有了电脑系统,加油机�
在深入分析了可辨识矩阵中可辨识集的特点及相互关系的基础上,优化改进决策辨识矩阵:①两对象之间不作逆向比较;②将决策可辨识矩阵列简化为属性等价类;③正域等价类作为决策可辨识矩阵的行,分情况给出了新决策表求取...
对小波分析分讲解以及实例教学,可以实现,内附word说明
滞销楼盘问题小析DOC简洁、实用的特性,相信能够为大家利用人力、物力、财力、资源等带来许多帮助,欢迎...该文档为滞销楼盘问题小析DOC,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
唐人送别诗小析 (2003年)
属性约简是粗糙集理论中重要研究内容,由于现实应用领域中决策信息系统往往呈现出不完备性特点,为此,首先将不完备决策表转化为集值决策信息系统,并详细分析了集值决策信息系统下基于相似关系的分布约简和最大分布...
网站的专场设计,应该算是网页视觉设计师的必修课,应该也算是最基本功。她所需要的设计理论都是最基本,但同时也是最重要的。设计理论版本多如牛毛,我这里仅仅整理5个方面来分析网页专场设计的一些方法,本人并非...
为使空间故障树理论中系统结构反分析的分类推理法具有严格的数学定义,以适应广泛的系统结构反分析问题,引入因素空间理论的因素逻辑对分类推理法进行重构。重构的目的在于规范原方法定义和步骤为严格的数学形式,...