web监听器
主要有三类:
1.ServletContext:对servlet上下文(application对象)进行监听
2.Session:对session监听
3.Request:对request的监听
监听器是一个实现特定接口的普通java类,这个程序专门用于监听另一个java对象的方法调用或属性改变,当监听到事件发生后,监听器的某个方法立即执,相关接口[EVENT/LISTENER]
平时做开发的时候,我们是写监听器去监听其他对象,那么我们如果想设计一个对象,让这个对象可以被别的对象监听又该怎么做呢?
按照严格的事件处理模型来设计一个对象,这个对象就可以被别的对象监听,事件处理模型涉及到三个组件:事件源、事件对象、事件监听器。
一般程序监听:
public class Person {
//引用监听
private PersonListener listener;
public void eat() {
if (listener != null) {
//没有监听怎么办?创建event实例
listener.doeat(new Event(this));
}
}
public void run() {
if (listener != null) {
listener.dorun(new Event(this));
}
}
//注册监听,创建实例
public void registerListener(PersonListener listener) {
this.listener = listener;
}
}
interface PersonListener {
void doeat(Event e);
void dorun(Event e);
}
class Event {
private Person source;
public Event() {
}
public Event(Person source) {
this.source = source;
}
public Person getSource() {
return source;
}
public void setSource(Person source) {
this.source = source;
}
}
如何调用呢??
public static void main(String[] args) {
Person p = new Person();
//第一步必须先注册监听
p.registerListener(new PersonListener() {
//event还没有实例化
public void doeat(Event e) {
Person p = e.getSource();
System.out.println(p + "在吃东西");
}
public void dorun(Event e) {
Person p = e.getSource();
System.out.println(p + "在跑步");
}
});
//创建event实例,并绑定事件源
p.eat();
p.run();
}
JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
在web.xml中注册监听:
<listener>
<listener-class>listener.MyServletContextListener </listener-class>
</listener>
<listener>
<listener-class>listener.MyHttpSessionListener</listener-class>
</listener>
<session-config>
<session-timeout></session-timeout>
</session-config>
<listener>
<listener-class>listener.MyServletRequestListener</listener-class>
</listener>
一、ServletContext域对象的创建和销毁
ServletContext对应于一个tomcat应用,实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。
public class MyServletContextListener implements ServletContextListener {
@Override
//当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象创建");
}
@Override
//当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象销毁");
tomcat监听对于定时任务,项目启动关闭、日志记录等
二、监听HttpSession域对象的创建和销毁
HttpSessionListener 接口用于监听HttpSession对象的创建和销毁
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println( se.getSession() + "创建了!!");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session销毁了!!");
}
}
对于session的监听,一般用于用户登陆,用户在线,用户操作权限验证,用户登出的监听,非常有用。
三、监听ServletRequest域对象的创建和销毁
ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁
public class MyServletRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println(sre.getServletRequest() + "销毁了!!");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println(sre.getServletRequest() + "创建了!!");
}
}
request监听对于用户请求权限,用户是否在线进行验证,在实际开发中非常有用。
用户每一次访问都会创建request对象,当访问结束后,request对象就会销毁。而MyServletRequestListener 对每个request的创建和销毁都进行了监听。
- 大小: 4.3 KB
分享到:
相关推荐
Listener监听器 ...用于监听域对象创建和销毁的事件监听器 用于监听域对象属性增加和删除的事件监听器 用于监听绑定到HttpSession域中某个对象 状态的事件监听器 ServletContextListener接口 HttpS
JavaWeb课程设计---客户管理系统.pdf
Jsp-Order-online+javaweb 网上点餐项目Jsp-Order-online+javaweb 网上点餐项目Jsp-Order-online+javaweb 网上点餐项目Jsp-Order-online+javaweb 网上点餐项目Jsp-Order-online+javaweb 网上点餐项目Jsp-Order-on...
JavaWeb学习资料---PDF格式,希望能够学习者提供帮助,文档中包含多个JavaWeb学习环节,循序渐渐地介绍了JavaWeb的相关知识
JavaWeb课程设计汇本---客户管理系统.doc
Javaweb图书管理系统--完整项目,整个项目完整打包。
利用新浪微博开放平台开发javaweb应用----用户授权.pdf
JavaWeb课程设计---客户管理系统方案.doc
利用新浪微博开放平台开发javaweb应用----用户授权参照.pdf
利用新浪微博开放平台开发javaweb应用----用户授权借鉴.pdf
1Javaweb-后台管理系统-管理员管理 练习专用,难度系数3个星
自存-javaweb-ssm-spring-springboot-html-vanta.js
基于javaweb的课程设计--奶茶销售管理系统源码+数据库.zip 95分以上高分必过项目,下载即用无需修改,项目完整确保可以运行。 基于javaweb的课程设计--奶茶销售管理系统源码+数据库.zip 95分以上高分必过项目,...
明日科技的javaweb典型模块宝典--打印模块,节省了开发时间
JavaWeb-第1章-网页开发基础
JavaWeb开发Eclipse环境配置--史上最详细的教程,环境搭建,tocat配置,等
JavaWeb 入门级项目实战 -- 文章发布系统 原码
基于MVC的Javaweb项目-----简单的唱片管理销售平台 # 初学javaweb,制作简单唱片销售管理平台-附件资源