首页 > 编程知识 正文

java监听器用法,java窗口监听器

时间:2023-05-06 07:13:42 阅读:144666 作者:4395

一.监听器生命周期

监听器是web的三个主要组件之一,是接收请求并接收服务端操作的servlet侦听器。

监听器分为以下几类: ((都是接口类,所以必须实现适当的方法) )。

1 .生命周期监听器(3个) ) ) ) ) ) ) )。

ServletContextListener

requestDestroyed在容器启动时调用。 在servlet实例化之前运行

当容器被销毁时,将调用请求初始化。 在servlet被销毁后运行

http会话监听器

在创建http会话后调用sessionCreated

在http会话被销毁之前调用sessionDestroyed。 (session.invalidate ); 方法)

ServletRequestListener

requestDestroyed在创建请求对象后被调用(

请求初始化在请求对象被销毁之前被调用(请求结束)。

2 .属性变更监听器(3个) ) )。

attribute added (servletcontextattributeeventevent ) )将属性添加到APP时调用

从APP中移除属性时调用属性移除(servletcontextattributeeventevent )

attribute replaced (servletcontextattributeeventevent ) )替换应用程序属性时调用

HttpSessionAttributeListener

属性添加(httpsessionbindingeventevent )。

属性移除(httpsessionbindingeventevent )。

属性替换(httpsessionbindingeventevent )。

servletrequestattributelistener

属性添加(servletrequestattributeeventevent )。

属性移除(servletrequestattributeeventevent )。

属性替换(servletrequestattributeeventevent )。

上述侦听器接口不仅参数不同,而且方法名称也相同。 分别监听应用程序、会话和请求对象属性的变化。

3 .在3.session中指定类属性更改侦听程序(2)。

HttpSessionBindingListener

当类实例设置为session域时,将调用value bound (httpsessionbindingeventevent )

从会话域中删除类的实例时,将调用value unbound (httpsessionbindingeventevent )

HttpSessionActivationListener

在对象session序列化(钝化)之后调用sessionwillpassivate (httpsessioneventse )

sessiondidactivate (httpsessioneventse )是在对象session反向序列化)之后调用的

二.测试范例

1 .生命周期拦截:

servletcontentattribute _ listener.Java

1 publicclassservletcontentattribute _ listenerimplementsservletcontextlistener {2/* *

3 *如何实现servletcontextlistener4* @ params ce5* /

6 publicvoidcontextinitialized (servletcontexteventsce ) 7系统. out.println (servletcontextlistener初始化); (9) 9

10 publicvoidcontextdestroyed (servletcontexteventsce ) 11 system.out.println (servletcontextlistener销毁); 12 }13 }

其他两个听众相似,没有反复投稿。

在web.xml中配置

1

2

3

4 study.my listener.servletcontentattribute _ listener

5

6

7

8

9 study.my listener.http session attribute _ listener

10

11

12

13

14 study.my listener.servletrequestattribute _ listener

15

执行结果:

2 .属性拦截:

servletcontentattribute _ listener.Java

1 publicclassservletcontentattribute _ listenerimplementsservletcontextattributelistener {2}

3 /**

4 * servletcontextattributelistener实现方法5 *@paramevent6 */

7 publicvoidattributeadded (servletcontextattributeeventevent )8string Meg=message format.format (servlet content附加属性33666666 9 十)十一

12 publicvoidattributeremoved (servletcontextattributeeventevent ) 13 string Meg=message format.format ) servlet cont删除属性14系统15 ) 16

17替代publicvoidattributereplaced (servletcontextattributeeventevent (18 string Meg=message format.format ) servlet cont 二十)二十一

22 }

另外两个听众很相似,不是女婿收养的。 然后在jsp页面上进行测试

listenerDemo.jsp

1

8

9

10

11

监听器设定12

13

14

22/* * 23 *会话拦截24 */25会话. set attribute (' session name ',' changxiang ' ); 26 session.set attribute (session name,) zxdtk ); 27会话.移除属性(会话名称); 28 session.invalidate (; 29/* * 30 *请求拦截31 */32请求. set attribute ('请求名称',' changxiang ' ); 3 request.set attribute (request name,) zxdtk ); 34 request.remove attribute (请求名称); 35 %

36

37

执行结果如下。

注:一个问题是,tomcat启动时将执行两次servletContextListener侦听,最后删除server.xml上的context手动配置,不再加载两次。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。