博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化...
阅读量:4955 次
发布时间:2019-06-12

本文共 2804 字,大约阅读时间需要 9 分钟。

Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化

监听器

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

Servle监听器

Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession ServletRequest 这三个域对象。

Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型。

监听三个域对象创建和销毁的事件监听器

监听域对象中属性的增加和删除的事件监听器

监听绑定到 HttpSession 域中的某个对象的状态的事件监听器。(查看API文档)

监听servletContext域对象创建和销毁

ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。

ServletContext 对象被创建时,激发contextInitialized (ServletContextEvent sce)方法

ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

servletContext域对象何时创建和销毁:

创建:服务器启动针对每一个web应用创建servletcontext

销毁:服务器关闭前先关闭代表每一个web应用的servletContext

编写 Servlet 监听器

和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方法。

和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用<listener>标签配置好监听器,web容器就会自动把监听器注册到事件源中。

一个 web.xml 文件中可以配置多个 Servlet 事件监听器,web 服务器按照它们在 web.xml 文件中的注册顺序来加载和注册这些 Serlvet 事件监听器。

监听HttpSession域对象创建和销毁

HttpSessionListener接口用于监听HttpSession创建和销毁

创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用。

销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用。

Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session

销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间

ServletRequestListener 接口用于监听ServletRequest 对象的创建和销毁。

Request 对象被创建时,监听器的requestInitialized方法将会被调用。

Request对象被销毁时,监听器的requestDestroyed方法将会被调用。

(此处复习request对象,在浏览器窗口中多次刷新访问servlet,看request对象的创建和销毁,并写一个servlet,然后用sendRedirectforward方式跳转到其它servlet,查看request对象的创建和消耗)

servletRequest域对象创建和销毁的时机:

创建:用户每一次访问,都会创建一个reqeust

销毁:当前访问结束,request对象就会销毁

监听三个域对象属性变化

Servlet规范定义了监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。

这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener ServletRequestAttributeListener

这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

attributeAdded 方法

当向被监听器对象中增加一个属性时,web容器就调用事件监听器的 attributeAdded 方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象

各个域属性监听器中的完整语法定义为:

public void attributeAdded(ServletContextAttributeEvent scae)

public void attributeAdded(HttpSessionBindingEvent hsbe)

public void attributeAdded(ServletRequestAttributeEvent srae)

attributeRemoved 方法

当删除被监听对象中的一个属性时,web 容器调用事件监听器的这个方法进行相应

各个域属性监听器中的完整语法定义为:

public void attributeRemoved(ServletContextAttributeEvent scae)

public void attributeRemoved (HttpSessionBindingEvent hsbe)

public void attributeRemoved (ServletRequestAttributeEvent srae)

attributeReplaced 方法

当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应

各个域属性监听器中的完整语法定义为:

public void attributeReplaced(ServletContextAttributeEvent scae)

public void attributeReplaced (HttpSessionBindingEvent hsbe)

public void attributeReplaced (ServletRequestAttributeEvent srae)

转载于:https://www.cnblogs.com/zgl521/archive/2012/12/11/3057682.html

你可能感兴趣的文章
java内部类
查看>>
常量指针与指针常量
查看>>
有理数的四则运算
查看>>
JQuery选择器
查看>>
perl读取文件
查看>>
java神坑系列——split
查看>>
js----Open()函数
查看>>
ADO.NET EntityObject 生成器模板
查看>>
Umbraco 7 支持Microsoft Word 2013 发布内容
查看>>
SQL Server 管理对象 (SMO)
查看>>
窗口的切换
查看>>
.net开发工作中遇到的问题(附带解决方案)(持续记录)
查看>>
C/c++中 数组全局变量的定义声明 与 引用声明
查看>>
ajax 请求数据
查看>>
k8s-部署WEB-UI(dashboard)
查看>>
linux常用命令
查看>>
推荐 30 款最好的免费项目管理软件
查看>>
SDN第五次上机作业
查看>>
leetcode 657. Judge Route Circle
查看>>
Redis+MongoDB 最佳实践 做到读写分离 -摘自网络
查看>>