Litener监听器的原理和作用是什么
更新:HHH   时间:2023-1-7


这篇文章主要讲解了“Litener监听器的原理和作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Litener监听器的原理和作用是什么”吧!

Servlet API 中定义了几种监听器,大多数尽管不是全部,都将监听某种形式的会话活动,通过实现对应事件的监听器接口订阅某个事件,然后在部署描述符中添加 <listener> 配置,或者在该类中添加注释

@javax.servlet.annotation.WebListener (但不需要同事使用这两种方式)

如果需要,可以在单个类中实现多个监听器接口,当然,你不会希望将不同业务的代码添加到同一个类中。当某个事件发生时,将触发事件发布,然后容器将调用对应事件监听器中的方法。

Listener

监听三个域对象

ServletContext

ServletRequest

HttpSession

监听三个对象的创建和销毁

ServletContextListener

servlet 启动 和 销毁的时候会触发

ServletRequestListener

每次request 请求来 会触发, 刷新下页面就会触发

HttpSessionListener

一个浏览器只创建一次session

创建:java中第一次调用 request.getSession 的时候

销毁:

session超时

手动销毁 session

服务器非正常关闭

监听三个对象的属性变化 (添加 替换 删除)

ServletContextAttributeListener

application.setAttribute("aa","fffffff 66666 aaa <br />aaaa");

System.out.println("add"+event.getName()+event.getValue());

application.setAttribute("aa","f33333 aaa <br />aaaa");

application.removeAttribute("aa");

ServletRequestAttributeListener

HttpSessionAttributeListener

监听session中javabean的状态

这2个接口需要javabean实现,是让javabean感知到自己的状态

HttpSessionActivationListener (钝化(session 写入 磁盘)和活化 (磁盘写入session))

钝化: javabean 从session 持久化到磁盘上

活化: javabean 从磁盘写入session 中

也是要写到指定的类上 要实现2个接口 implements HttpSessionActivationListener,Serializable{

可以通过配置文件修改 javabean 钝化 活化 的时间

/META-INFO/context.xml

maxIdleSwap="1" 多长时间不用

directory 目录下

<?_**xml version****="1.0"** **encoding****="UTF-8"**_?>

<Context >

<Manager className**="org.apache.catalina.session.PersistentManager"** maxIdleSwap**="1"**>

<Store className**="org.apache.catalina.session.FileStore"** directory**="gwyy"** />

</Manager>

</Context>

HttpSessionBindingListener (session的绑定和解绑 )

需要往session里面new 哪个类就在哪个类上加绑定接口

session.setAttribute("p",new Person(1,"tom"));

要往 Person 类上加接口

让容器继承监听器 ,然后加上@WebListener

@WebListener

public class SessionListener implements HttpSessionListener, HttpSessionIdListener{}

web.xml 注册

<listener>

<listener-class>me.liangtian.web.servlet.myServletLis</listener-class>

</listener>

<listener>

<listener-class>me.liangtian.web.servlet.myRequestLis</listener-class>

</listener>

<listener>

<listener-class>me.liangtian.web.servlet.mySessionLis</listener-class>

</listener>

感谢各位的阅读,以上就是“Litener监听器的原理和作用是什么”的内容了,经过本文的学习后,相信大家对Litener监听器的原理和作用是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!

返回大数据教程...