浅谈入门ServletListener监听器

简介: 所有的监听器中的方法,当指定时间发生后,则Web服务器调用该方法。第一步:创建一个类,实现监听接口和接口方法。

//javax.servlet包下监听接口:  (或jakarta.servlet)

ServletContextListener    //监听ServletContext对象的状态

ServletContextAttributeListener //监听ContextAttribute中数据状态

ServetRequestListener     //监听ServetRequest的状态

ServletRequestAttributeListener //监听RequestAttribute中数据状态

//javax.servlet.http包下监听接口:

HttpSessionListener      //监听HttpSession会话的状态

HttpSessionAttributeListener //监听session域中的数据状态

HttpSessionBindingListener (该监听器不需要配置xml或使用注解)//目标类实现该监听器,则监听该类是否有数据绑定

HttpSessionldListener //监听session的Id状态

HttpSessionActivationListener //监听session的存储状态(内存存储到硬盘, 硬盘到内存,又称钝化,活化)

监听器的使用步骤

所有的监听器中的方法,当指定时间发生后,则Web服务器调用该方法。

第一步:创建一个类,实现监听接口和接口方法。

public class MyListener implements ServletContextListener {

//ServletContext被创建时调用

   @Override

   public void contextInitialized(ServletContextEvent sce) {

     

//代码--------, Web服务器调用该方法。

     

   }

// ServletContext被销毁时调用

   @Override

   public void contextDestroyed(ServletContextEvent sce) {

     

//代码--------, Web服务器调用该方法。

   }

}


第二步:web.xm文件配置或使用注解

<listener>

   <listener-class>com.javaweb.MyListener</listener-class>

</listener>

@WebListener


3.png

3.png

AttributeListener

@WebListener

public class AttributeListenerDemo implements HttpSessionAttributeListener {

   //当向session域中存储数据的时,Web服务器执行该方法attributeAdded

   @Override

   public void attributeAdded(HttpSessionBindingEvent event) {

       System.out.println("Add");

   }

   //当向session域中删除数据的时,Web服务器执行该方法attributeRemoved

   @Override

   public void attributeRemoved(HttpSessionBindingEvent event) {

       System.out.println("Removed");

   }

   //当向session域中替换某一个数据的时,Web服务器执行该方法attributeReplaced

   @Override

   public void attributeReplaced(HttpSessionBindingEvent event) {

       System.out.println("Replaced");

   }

}


BindingListener

Student类


public class Student implements HttpSessionBindingListener {

   //valueBound绑定数据

   @Override

   public void valueBound(HttpSessionBindingEvent event) {

       System.out.println("valueBound");

   }

   //valueUnbound解绑数据

   @Override

   public void valueUnbound(HttpSessionBindingEvent event) {

       System.out.println("valueUnbound");

   }

   private int id;

   private String name;

   private int age;

   public Student() {

   }

   public Student(int id, String name, int age) {

       this.id = id;

       this.name = name;

       this.age = age;

   }

   public int getId() {

       return id;

   }

   public void setId(int id) {

       this.id = id;

   }

   public String getName() {

       return name;

   }

   public void setName(String name) {

       this.name = name;

   }

   public int getAge() {

       return age;

   }

   public void setAge(int age) {

       this.age = age;

   }

}


Servlet类


@WebServlet("/se/bind")

public class SessionBindingListenerDemo extends HttpServlet {

   @Override

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //获取session对象

       HttpSession session = request.getSession();

       Student student =new Student();

       student.setId(01);

       student.setName("张三");

       student.setAge(18);

       session.setAttribute("student",student);

   }

}


2.png



IdListener


@WebListener

public class HttpSessionldListenerDemo implements HttpSessionIdListener {

 //当向session域中ID发生改变时,Web服务器执行该方法sessionIdChanged

   @Override

   public void sessionIdChanged(HttpSessionEvent httpSessionEvent, String s) {

     

   }

}

ActivationListener

@WebListener

public class HttpSessionActivationListenerDemo implements HttpSessionActivationListener {

   @Override

   public void sessionWillPassivate(HttpSessionEvent se) {

       //钝化

   }

   @Override

   public void sessionDidActivate(HttpSessionEvent se) {

       //活化

   }

}

HttpSessionListener方式监听器统计网络在线人数

Web.xml

<!--    设置session超时时长,2分钟-->

<session-config>

   <session-timeout>2</session-timeout>

</session-config>

//此为演示案例,注意线程安全

@WebListener

public class HttpSessionListenerDemo implements HttpSessionListener {

   public static long k=0;

   @Override

   public void sessionCreated(HttpSessionEvent se) {

       System.out.println("sessionCreated");

       k++;

   }

   @Override

   public void sessionDestroyed(HttpSessionEvent se) {

       System.out.println("sessionDestroyed");

       k--;

   }

}


1.png


HttpSessionBindingListener方式监听器统计网络在线人数


//此为演示案例,注意线程安全

User类

public class User implements HttpSessionBindingListener {

   @Override

   public void valueBound(HttpSessionBindingEvent event) {

       //用户登入

       ServletContext servletContext = event.getSession().getServletContext();

       Object onLine = servletContext.getAttribute("onLine");

       if (onLine == null){

           servletContext.setAttribute("onLine",1);

       }else {

           Long count = (Long) onLine;

           count++;

           servletContext.setAttribute("onLine",count);

       }

   }

   @Override

   public void valueUnbound(HttpSessionBindingEvent event) {

       //用户退出

       ServletContext servletContext = event.getSession().getServletContext();

       Object onLine = servletContext.getAttribute("onLine");

       Long count = (Long) onLine;

       count++;

       servletContext.setAttribute("onLine",count);

   }

   private String username;

   private String password;

--有参无参构造方法 get和set方法--

}


Servlet类

//假设用户登入成功

User user =new User();

user.setUsername("张三");

session.setAttribute("user",user);

//假设用户登入失败 , 从session从删除User对象

session.removeAttribute("user");


目录
相关文章
|
7月前
|
Java
25JavaWeb基础 - 监听器
25JavaWeb基础 - 监听器
37 1
|
4月前
javaWeb监听器Listener -自定义监听器类实现
javaWeb监听器Listener -自定义监听器类实现
|
8月前
|
缓存 应用服务中间件 数据库
【JavaWeb】 三大组件之监听器 Listener
在JavaWeb应用程序中,Listener(监听器)是一种机制,用于监听和响应特定的事件。它可以感知并响应与应用程序相关的事件,从而执行相应的逻辑处理。事件是在应用程序运行过程中发生的特定动作或状态改变。例如,Web应用程序的启动和关闭、请求的到达和完成、会话的创建和销毁等都被认为是事件。监听器会注册对这些事件的感兴趣,并在事件发生时调用相应的回调方法来执行预定的业务逻辑。
|
9月前
|
XML 监控 Java
Listener 监听器介绍以及代码演示
Listener 监听器介绍以及代码演示
59 0
|
12月前
|
程序员
监听器
监听器
78 0
|
Java Spring
监听器 - 基础篇
监听器 - 基础篇
151 0
监听器 - 基础篇
|
开发框架 监控 Java
【监听器入门】javaweb常用技术,你不得不知道
我们学习了过滤器,这次学习的监听器与过滤器作用十分相似。
【监听器入门】javaweb常用技术,你不得不知道
|
XML 测试技术 数据格式
Jmeter系列(15)- 监听器Listeners 的入门介绍
Jmeter系列(15)- 监听器Listeners 的入门介绍
159 0
Jmeter系列(15)- 监听器Listeners 的入门介绍
|
监控 Java 应用服务中间件
监听器第一篇【基本概念、Servlet各个监听器】
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。。
240 0
监听器第一篇【基本概念、Servlet各个监听器】