servlet监听器
当你干一件事的时候它就知道了
监听对象
可以监听四个范围对象中的后三个:
request —— ServletRequestListener
session —— HttpSessionListener
application —— ServletContextListener
1⃣️实现监听器的接口public class Listener implements ServletRequestListener ,HttpSessionListener, ServletContextListener{...}
监听那个就implements哪个,这里都要用就都写上
每个监听器各自提供了两个方法:监听开始和监听结束
2⃣️配置监听器
只需要在web.xml中写位置在哪里就可以
3⃣️监听对象的创建顺序
看个????
这个java文件中实现了三个监听器,每个都有initialize和destroyed,用来启用监听和停止监听
在这个session.jsp中创建个超链接到sessionIncadidate.jsp
sessionIncalidate.jsp用来销毁session
启动服务器:
可以从中间那一行黑字看到ServletContextListener在初始时自动创建
接着在浏览器中访问session(输入网址然后回车的这个过程):
之后出现了:
可以看到创建了request,创建了session又销毁了request
其中的过程可以看下图
访问session时,相当于客户端发送了一个请求到服务器端,这时创建了一个request,服务器自动为request创建一个session,请求结束后服务器自动销毁request,于是就有了上面我们看到的三行
接下来我们再次点击“使session失效”的超链接
可以看到在刚刚三行的基础上,多了四行
内部发生了这些事情:
1.超链接相当于另一个请求,创建request
2. sessionIncalidate.jsp中的session.invalidate()手动销毁了session
3. 请求结束销毁了request
最后再停止服务器,application也被销毁
监听对象中属性的变更
request ----——— ServletRequestAttributeListener
session ——----—— HttpSessionAttributeListener
application———— ServletContextAttributeListener
(在原来的基础上中间都加了一个Attribute)
每一个域对象监听都有三个函数:增加、替换、删除