博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaweb之监听器详解
阅读量:5923 次
发布时间:2019-06-19

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

在servlet中定义了多种类型的监听器,他们用于监听事件源分别是servletContext,httpsession,servletrequest 这三个域对象。

servlet中监听器主要有三类:

1,监听三个域对象的创建和销毁的监听器(3个 ),

servletContextListenlisten监听器:用来监听servletcontxt域对象的创建和销毁的监听器:

创建:在服务器启动的时候,为每个web应用创建单独的ServletContext对象。

 contextInitialized用来监听创建

 销毁:在服务器关闭的时候,或者项目从web服务器中移除的时候。

contextDsttroyed用来监听销毁

创建监听器就是新建一个类然后实现servletContextListen

然后在配置xml(用eclipse创建lissten文件系统会自动生成)

<listener>

<listen_class>监听器名称的全路径</>

</listener>

 HttpSessionListener监听器

 

用来监听HttpSession对象的创建和销毁

 

服务器端第一次调用getSession()方法时候。

 

l 销毁:

 

非正常关闭服务器(正常关闭服务器session会被序列化)。

 

n Session过期(默认过期时间30分钟)。

 

手动调用session.invalidate()方法。

 

 

套路同上

 ServletRequestListener监听器

 

用户监听ServletRequest对象的创建和销毁

 

l 创建

 

从客户端向服务器发送一次请求,服务器就会创建request对象。

 

l 销毁

 

服务器对这次请求作出了响应之后,request对象就销毁了。

 

 

 

2,监听三个域对象的属性变更(属性添加,移除,替换)的监听器(3个)

ServletContextAttributeListener

监听ServletContext对象中的属性变更(属性添加,移除,替换)的监听器

 

 HttpSessionAttributeListener

监听HttpSession对象中的属性变更(属性添加,移除,替换)的监听器

 

 

 ServletRequestAttributeListener

监听ServletRequest对象中的属性变更(属性添加,移除,替换)的监听器

 

 

3,监听httpsession中Javabean的状态改变(钝化,活化,绑定,解绑)的监听(2个)

保存在Session域中的Java类可以有多种状态:绑定到session中;从session中解除绑定;随session对象持久化到一个存储设备中(钝化);随session对象从一个存储设备中恢复(活化)。

Servlet对方中定义了两个特殊的监听的接口来帮助Java类了解自己在Session域中的状态

HttpSessionBindingListener接口

HttpSessionActivationListener接口,

实现这两个接口的类不需要在web.xml中进行配置。

 监听器

监听Java类在HttpSession中的绑定和解除绑定的状态的监听器:

 监听器

监听HttpSessionJava类的钝化和活化监听器

 

配置完成session的序列化和反序列化

Context标签可以配置在:

tomcat/conf/context.xml:所有tomcat下虚拟主机和虚拟目录下的工程都会序列化session

tomcat/conf/Catalina/localhost/context.xml:localhost虚拟主机下的所有项目会序列化session

工程/META-INF/context.xml:当前工程才会序列化session

<Context>

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

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

</Manager>

</Context>

 

 

保存在Session域中的Java类可以有多种状态:绑定到session中;从session中解除绑定;随session对象持久化到一个存储设备中(钝化);随session对象从一个存储设备中恢复(活化)。

本文转自 sshpp 51CTO博客,原文链接:http://blog.51cto.com/12902932/1925690,如需转载请自行联系原作者
你可能感兴趣的文章
mongo同步到es
查看>>
用C#下的Raw
查看>>
mysql / sqlserver / oracle 常见数据库分页
查看>>
combo
查看>>
spring mvc 支持json
查看>>
Access数据库SQL注入(Access SQL Injection)
查看>>
个人学习C++过程中对const的总结:初始化系列之用字面值常量与其他类型的值初始化的区别(一)...
查看>>
自动化学习笔记之接口测试(一)
查看>>
深度学习常用方法
查看>>
完成端口模型开发
查看>>
CentOS Linux release 7.6.1810全新安装 Zimbra 8.8.12邮箱
查看>>
出现蓝屏代码0x0000007b的原因及解决办法
查看>>
C++ File 类学习总结
查看>>
权限框架 - shiro 自定义realm
查看>>
获取系统资源APP
查看>>
HP Autonomy KeyView入门使用&Maven打包流程
查看>>
Unity3d有关图形尺寸大小的注意事项
查看>>
js对象
查看>>
目标文件
查看>>
NTFS文件系统概述
查看>>