listener filter servlet的执行顺序

本文详细解析了Web应用中Listener、Filter及Servlet的加载顺序与生命周期,包括它们的初始化时机、执行流程以及各自在不同阶段的行为特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加载顺序:

	启动的顺序为listener->Filter->servlet.
	
	简单记为:理(Listener)发(Filter)师(servlet).
	
	执行的顺序不会因为三个标签在配置文件中的先后顺序而改变。
	注意:这个加载顺序,只是初始化的加载顺序,并不是调用的加载顺序,
	比如监听器的调用可能随时随地

生命周期:

	从启动,结束和运行时候的日志看:
	
	Listener生命周期:一直从程序启动到程序停止运行。
	
	ServletRequestListener:每次访问一个Request资源前,都会执行requestInitialized()方法,servlet 方法访问完毕,都会执行requestDestroyed()方法。
	
	HttpSessionListener:每次调用request.getSession(),都会执行sessionCreated()方法,执行session.invalidate()方法,都会执行sessionDestroyed()方法。
	
	ServletRequestAttributeListener:每次调用request.setAttribute()都会执行attributeAdded()方法,如果set的key在request里面存在,就会执行
	attributeReplacerd()方法,调用request.removeAttribute()方法,都会执行attributeRemoved()方法。
	 
	
	Filter生命周期:程序启动调用Filter的init()方法(永远只调用一次,具体看启动日志),程序停止调用Filter的destroy()方法(永远只调用一次,具体看关闭日志),
	doFilter()方法每次的访问请求如果符合拦截条件都会调用(程序第一次运行,会在servlet调用init()方法以后调用,不管第几次,都在调用doGet(),doPost()方法之前)。
		 
	
	Servlet生命周期:程序第一次访问,会调用servlet的init()方法初始化(只执行一次,具体看日志),每次程序执行都会根据请求调用doGet()或者doPost()方法,程序停止调用destory()方法(具体看结束日志)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值