servlet监听器

当你干一件事的时候它就知道了

监听对象

可以监听四个范围对象中的后三个:
request —— ServletRequestListener
session —— HttpSessionListener
application —— ServletContextListener

1⃣️实现监听器的接口
public class Listener implements ServletRequestListener ,HttpSessionListener, ServletContextListener{...}
监听那个就implements哪个,这里都要用就都写上

每个监听器各自提供了两个方法:监听开始和监听结束

2⃣️配置监听器
servlet监听器
只需要在web.xml中写位置在哪里就可以

3⃣️监听对象的创建顺序
看个????
这个java文件中实现了三个监听器,每个都有initialize和destroyed,用来启用监听和停止监听
servlet监听器
在这个session.jsp中创建个超链接到sessionIncadidate.jsp
servlet监听器
sessionIncalidate.jsp用来销毁session
servlet监听器
启动服务器:
servlet监听器
可以从中间那一行黑字看到ServletContextListener在初始时自动创建
接着在浏览器中访问session(输入网址然后回车的这个过程):
servlet监听器
之后出现了:
servlet监听器
可以看到创建了request,创建了session又销毁了request
其中的过程可以看下图
servlet监听器
访问session时,相当于客户端发送了一个请求到服务器端,这时创建了一个request,服务器自动为request创建一个session,请求结束后服务器自动销毁request,于是就有了上面我们看到的三行
接下来我们再次点击“使session失效”的超链接
servlet监听器
可以看到在刚刚三行的基础上,多了四行
内部发生了这些事情:
servlet监听器
1.超链接相当于另一个请求,创建request
2. sessionIncalidate.jsp中的session.invalidate()手动销毁了session
3. 请求结束销毁了request

最后再停止服务器,application也被销毁

监听对象中属性的变更

request ----——— ServletRequestAttributeListener
session ——----—— HttpSessionAttributeListener
application———— ServletContextAttributeListener

(在原来的基础上中间都加了一个Attribute)
servlet监听器
每一个域对象监听都有三个函数:增加、替换、删除