java监听器的学习与应用
来源:互联网 发布:花生壳 免费 域名 流量 编辑:程序博客网 时间:2024/06/05 22:39
web的监听器
1) web监听器的引入:
对应的javase
事件源:事件在哪里发生 Jbutton
事件:发生了什么 点击事件(MouseEvent)
监听器:事件发生后要做什么 触发了xx代码(MouseLisener)
2) web监听器的定义:
web开发中,经常使用到一些对象,如servletContext,servletRequest,HttpSession,希望监听这些对象的创建和销毁或属性的增删改行为,可使用监听器监听这些行为。
3)web监听器的分类:
事件源
事件
监听器
ServletContext
(对象的创建和销毁)
ServletContextEvent
ServletContextLisener
ServletContext
(对象属性的增删改)
ServletContextAttributeEvent
ServletContextAttributeLisener
ServletRequest
(对象的创建和销毁)
ServletRequestEvent
ServletRequestLisener
ServletRequest
(对象属性的增删改)
ServletRequestAttributeEvent
ServletRequestAttributeLisener
HttpSession
HttpSessionEvent
HttpSessionLisener
HttpSession
HttpsessionBingdingEvent
HttpSessionAttributeLisener
一、ServletContextLisener
作用:用于监听ServletContext对象的创建和销毁
创建:web应用加载时(即web服务器启动的时候)
销毁:web应用重新部署或停止时
应用: 1、初始化数据库(建表) 2、销毁数据库(删表)
开发步骤:
(1) 编写类,实现对应的监听器接口
(2) 在web.xml中配置(注册监听器)
<!-- 注册监听器 -->
<listener>
<listener-class>gz.lulu.a_context.MyServletContext</listener-class>
</listener>
二、ServletContextAttributeLisener
作用:用于监听ServletContext属性的增删改
增:setAttribute(”name”,Object);
删:removeAttribute(”name”);
改:setAttribute(”name”,Object);
/*jsp页面
<%
application.setAttribute("name", "jack");//增加
application.setAttribute("name", "rose");//修改
application.removeAttribute("name");//删除
%>
*/
//属性添加
public void attributeAdded(ServletContextAttributeEvent scab) {
String name = scab.getName();
Object value = scab.getValue();
System.out.println("属性增加:"+name+"="+value);
}
//属性删除
public void attributeRemoved(ServletContextAttributeEvent scab) {
String name = scab.getName();
Object value = scab.getValue();
System.out.println("属性删除:"+name+"="+value);
}
public void attributeReplaced(ServletContextAttributeEvent scab){
String name = scab.getName();
//属性修改后,需要重新获取值
Object value = scab.getServletContext().getAttribute("name");
System.out.println("属性修改:"+name+"="+value);
}
三、ServletRequestLisener
作用:用于监听ServletRuquest对象的创建和销毁
创建:每次请求发出时
销毁:请求完毕时
应用: 1、获取请求相关的数据,共享到jsp页面
客户端的ip地址是:${sessionScope.ip }
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("ServletRequest对象创建了");
HttpServletRequest request = (HttpServletRequest)sre.getServletRequest();
String ip = request.getRemoteHost();
HttpSession session = request.getSession();
session.setAttribute("ip", ip);
}
四、ServletRequestAttributeLisener
作用:用于监听ServletRequest属性的增删改
增:setAttribute(”name”,Object);
删:removeAttribute(”name”);
改:setAttribute(”name”,Object);
<%
request.setAttribute("name","jack");
request.setAttribute("name","Lily");
request.removeAttribute("name");
%>
public void attributeReplaced(ServletRequestAttributeEvent srae) {
String name = srae.getName();
Object value = srae.getServletRequest().getAttribute("name");
System.out.println("属性修改:"+name+"="+value);
}
//属性增加
public void attributeAdded(ServletRequestAttributeEvent srae) {
String name = srae.getName();
Object value = srae.getValue();
System.out.println("属性增加:"+name+"="+value);
}
public void attributeRemoved(ServletRequestAttributeEvent srae) {
String name = srae.getName();
Object value = srae.getValue();
System.out.println("属性删除:"+name+"="+value);
}
七、HttpSessionLisener
作用:用于监听HttpSession对象的创建和销毁
创建:调用request.getSession时
销毁:
(1) 不访问httpseession开始,默认30分钟服务器回收 。
(2) 局部改变回收时间:setMaxInactiveInterval(intinterval)
(3) 全局改变回收时间:
<session-config>
<session-timeout>过期时间</session-timeout>
</session-config>
(4)直接销毁:invalidate()
应用: 1、粗略统计在线访客人数
Web.xml
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Jsp测试页面
<body>
当前网站的在线访客人数为:${applicationScope.onlineCount }
</body>
//演示HttpSession监听器
public class MySessionListener implements HttpSessionListener{
private int onlineCount=1;
//HttpSession对象创建时调用
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session对象创建了"+se.getSession());
//把onlineCount放到域对象中。
注:这里要使用ServletContext才可以,不能使用HttpSession
ServletContext context = se.getSession().getServletContext();
context.setAttribute("onlineCount",onlineCount);
onlineCount++;
}
七、HttpSessionAttributeListener
作用:用于监听HttpSession属性的增删改
增:setAttribute(”name”,Object);
删:removeAttribute(”name”);
改:setAttribute(”name”,Object);
public void attributeAdded(HttpSessionBindingEvent se) {
String name = se.getName();
Object value = se.getValue();
System.out.println("增加属性"+name+"="+value);
}
public void attributeRemoved(HttpSessionBindingEvent se) {
String name = se.getName();
Object value = se.getValue();
System.out.println("删除属性"+name+"="+value);
}
public void attributeReplaced(HttpSessionBindingEvent se) {
String name = se.getName();
//重新获取修改后的属性值
Object value = se.getSession().getAttribute("name");
System.out.println("修改属性"+name+"="+value);
}
应用: 1、用户可以登录系统、退出系统
2、用户登陆后,可查看在线登录用户列表
3、管理员可以踢指定登录用户
- java监听器的学习与应用
- java的事件监听器学习
- JAVA 监听器与适配器 小小的分析
- java监听器的原理与实现
- Web应用的监听器
- java web 监听器学习
- java学习之----监听器
- 监听器与过滤器的链式综合应用只解析图
- Java web应用之监听器
- servlet监听器的学习
- 学习记录 监听器与过滤器
- java 监听器的实现
- java web 的监听器
- Java的监听器种类
- Java的监听器种类
- Java监听器的使用
- java----监听器的作用
- java----监听器的作用
- create table of mysql database
- Procedure -- 存储过程初体验
- 拖拽表格单元格,改变单元格内容
- 天声人語 20151112 くるくる変わる就活時期
- 修饰符全解
- java监听器的学习与应用
- (能力不足翻译有误请赐教!)CoordinatorLayout与滚动的处理
- K-Means算法学习笔记
- iOS中AutoLayer自动布局流程及相关方法
- python 文件、目录操作(新增、移动、删除等)
- STM32入门学习之SysTick系统定时器(STM32F030F4P6基于CooCox IDE)
- UWP 绘制图形
- Unity3D中隐藏与显示物体的一些操作
- linux中的条件测试