提前阅读:https://blog.csdn.net/Su_Levi_Wei/article/details/50665835
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓↓↓↓ Servlet监听器 ↓↓↓↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Servlet监听器;
为什么要有?
当个别用户进行恶意的破坏服务器的操作的时候,
如何获取到是这个用户在什么时候进行破坏?
因为每一次进行而已破坏需要是需要发送请求道服务器的
是什么?
是Servlet的三大组件之一,是SUN公司定义的一个标准
作用;
用于监听web开发中常用对象的动作,如;创建,销毁等。。。。
可以根据监听到的数据进行某些逻辑代码操作
使得开发web项目的灵活性,可变性更大。。。。。。
例如;垃圾文件的发送等。。。
特点;
是类似JavaScript中需要事件来触发的。
◆每一个事件都会封装成为一个对象
-----------------------------------↓↓↓↓↓↓↓Servlet监听器 —— 事件↓↓↓↓↓↓↓------------------------------------------------
Servlet监听器_事件;
Servlet监听器是监听某些对象的动作,
那么这些动态是如何发生的,则是通过事件。。。。。。
完成事件机制三个要求;
1.事件源;事件发送源头 ---> 如;用户请求
2.事件;对这个源头需要触发什么事件 ---> 发送请求给服务器
3.监听器;事件触发后需做什么 ---> 如;进行后台验证、跳转等.....
wbe开发事件机制;
常用事件源;ServletContext/ServletSession/Servletrequest
发生的事件;创建、销毁、添加、修改、验证。。。。。。
监听器;也称为,对象的监听器。 属性的修改等。。。。。。
◆◆◆◆◆注;每一个web事件都会被封装成对应的对象
---------------------------------↓↓↓↓↓↓↓Servlet监听器 —— 开发步骤↓↓↓↓↓↓↓------------------------------------------------
Servlet监听器_开发步骤;
1.编译一个类实现某一个监听器或多个监听器
a_)重写对应的方法
b_)在所需的方法中写业务代码逻辑
2.在web.xml文件中配置监听器
<listener>
<listener-class>包名+类名</listener-class>
</listener>
--------------------------------↓↓↓↓↓↓↓Servlet监听器 —— 常用监听器↓↓↓↓↓↓↓------------------------------------------------
Web对象 事件对象 监听器
ServletContext ServletContextEvent ServletContextListener
↓↓↓↓↓↓↓ 创建,销毁 ↓↓↓↓↓↓↓创建,销毁
获取到事件触发后的某些数据 监听事件发生后触发的操作后,
如;源事件对象等. 执行对应的业务
ServletContextAttributeEvent ServletContextAttributeListener
↓↓↓↓↓↓↓ (C/D/U) ↓↓↓↓↓↓↓(C/D/U)
获取到属性事件触发后某些数据 监听属性事件发生触发后的操作
如;属性的值等..... 执行对应的业务
ServletContext解析;
ServletContext是在服务器启动的时候,
就创建了对象了,而服务器关闭的时候则销毁对象
而这个创建和销毁的事件则···封装成了ServletContextEvent对象
而在触发ServletContextEvent对象事件的时候,
可以通过ServletContextListener对象的对应的事件方法,
进行监听这个事件的创建和销毁从而执行某些需求的逻辑代码。
◆案例;在这个事件创建的时候向数据库写入一条创建信息,
在这个事件销毁的时候也写入一条创建信息,从而做到日志功能。
■■■■■■■ ServletContextAttribute是同样的原理
HttpSession HttpSessionEvnet HttpSessionListener
↓↓↓↓↓↓↓创建,销毁 ↓↓↓↓↓↓↓
获取到事件触发后的某些数据 监听事件发生后触发的操作后
如;源事件对象等... 执行对应的业务
HttpSessionAttributeEvent HttpSessionAttributeListener
↓↓↓↓↓↓↓(C/D/U) ↓↓↓↓↓↓↓(C/D/U)
获取到属性时间触发后某些数据 监听事件发生后触发的操作后
如;属性的值等..... 执行对应的业务
HttpSession解析;
当用户访问Jsp【内置对象】页面的时候就会创建Session对象,
当到了最大的存活时间时,用户没有对数据库进行任何的访问,
或服务器关闭,则会将这个创建了的Session对象进行销毁。
而在这个创建和销毁的两个事件Java将其封装成了
HttpSessionEvent这个类,从而可以通过
这个类的方法获取到某些信息,如源事件对象等....
而在触发HttpSessionEvent事件后,
可以通过HttpSessionListener接口的,
对应方法监听这个事件触发后的对应过程
◆案例;因为HttpSession对象是唯一标识每一个访问的用户的,
从而可以做一个当前网站的访问人数的案例
或者是当前网站登录用户管理的案例
■■■■■■■ HttpServlet是同样的原理
SerlvetRequest ServletRequestEvnet ServletRequestListener
↓↓↓↓↓↓↓创建、销毁 ↓↓↓↓↓↓↓(C/D/U)
获取到事件触发后的某些数据 监听事件发生后触发的操作后
如;源事件对象等... 执行对应的业务
ServletRequestAttributeEvnet ServletRequestAttributeListener
↓↓↓↓↓↓↓(C/D/U) ↓↓↓↓↓↓↓(C/D/U)
获取到事件触发后的某些数据 监听事件发生后触发的操作后
如;源事件对象等... 执行对应的业务
ServletRequest解析;
当用户给服务器发送一个请求的时候,
而这个请求的创建开始和销毁的事件
Java将其封装成了一个ServletReqeustEvnet对象
而在触发ServletRequestEvent对象后
可以通过ServletReqeustListener监听接口
监听这个servletReuqestEvent事件触发的过程
◆案例;可以通过这个做一个用户在某一个时间内,
发送数据到服务器的个数不可以超过多少个
超过了则服务器不在进行接收,
只有过了这个事件才再次进行接口,
从而对服务器起到一个保护的作用
■■■■■■■ ServletRequest是同样的原理
◆◆◆◆◆注;事件一般都是类,而监听都是接口