JSON

深入学习JavaWeb中监听器(Listener)的使用方法(2)

字号+ 作者:H5之家 来源:H5之家 2018-08-27 10:00 我要评论( )

listener descriptionMyRequestAndSessionAttributeListener监听器/description listener-classme.gacl.web.listener.MyRequestAndSessionAttributeListener/listener-class /listener 编写RequestAndSessionAttrib

<listener> <description>MyRequestAndSessionAttributeListener监听器</description> <listener-class>me.gacl.web.listener.MyRequestAndSessionAttributeListener</listener-class> </listener>

  编写RequestAndSessionAttributeListenerTest.jsp测试页面

<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>RequestAndSessionAttributeListener监听器测试</title> </head> <body> <% //往session域对象中添加属性 session.setAttribute("aa", "bb"); //替换session域对象中aa属性的值 session.setAttribute("aa", "xx"); //移除session域对象中aa属性 session.removeAttribute("aa"); //往request域对象中添加属性 request.setAttribute("aa", "bb"); //替换request域对象中aa属性的值 request.setAttribute("aa", "xx"); //移除request域对象中aa属性 request.removeAttribute("aa"); %> </body> </html>

  运行结果如下:

  从运行结果中可以看到,HttpSessionAttributeListener监听器和ServletRequestAttributeListener成功监听到了HttpSession域对象和HttpServletRequest域对象的属性值变化情况。

二、感知Session绑定的事件监听器

  保存在Session域中的对象可以有多种状态:绑定(session.setAttribute(“bean”,Object))到Session中;从 Session域中解除(session.removeAttribute(“bean”))绑定;随Session对象持久化到一个存储设备中;随Session对象从一个存储设备中恢复
  Servlet 规范中定义了两个特殊的监听器接口“HttpSessionBindingListener和HttpSessionActivationListener”来帮助JavaBean 对象了解自己在Session域中的这些状态: ,实现这两个接口的类不需要 web.xml 文件中进行注册。

2.1、HttpSessionBindingListener接口

  实现了HttpSessionBindingListener接口的JavaBean对象可以感知自己被绑定到Session中和 Session中删除的事件
  当对象被绑定到HttpSession对象中时,web服务器调用该对象的void valueBound(HttpSessionBindingEvent event)方法
  当对象从HttpSession对象中解除绑定时,web服务器调用该对象的void valueUnbound(HttpSessionBindingEvent event)方法

范例:

package me.gacl.domain; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; /** * @ClassName: JavaBeanDemo1 * @Description: * 实现了HttpSessionBindingListener接口的 JavaBean对象可以感知自己被绑定到 Session中和从Session中删除的事件 当对象被绑定到 HttpSession 对象中时,web 服务器调用该对象的 void valueBound(HttpSessionBindingEvent event) 方法 当对象从 HttpSession 对象中解除绑定时,web 服务器调用该对象的 void valueUnbound(HttpSessionBindingEvent event)方法 * @author: 孤傲苍狼 * @date: 2014-9-11 下午11:14:54 * */ public class JavaBeanDemo1 implements HttpSessionBindingListener { private String name; @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println(name+"被加到session中了"); } @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println(name+"被session踢出来了"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public JavaBeanDemo1(String name) { this.name = name; } }

  上述的JavaBeanDemo1这个javabean实现了HttpSessionBindingListener接口,那么这个JavaBean对象可以感知自己被绑定到Session中和从Session中删除的这两个操作,测试代码如下:

<%@ page language="java" pageEncoding="UTF-8"%> <%@page import=" me.gacl.domain.JavaBeanDemo1"%> <!DOCTYPE HTML> <html> <head> <title></title> </head> <body> <% //将javabean对象绑定到Session中 session.setAttribute("bean",new JavaBeanDemo1("孤傲苍狼")); //从Session中删除javabean对象 session.removeAttribute("bean"); %> </body> </html>

  运行结果如下:

2.2、HttpSessionActivationListener接口

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【JAVAWEB学习笔记】22

    【JAVAWEB学习笔记】22

    2017-06-02 17:04

  • jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    2017-05-24 16:05

  • 第5章 硕正WEB组件的应用

    第5章 硕正WEB组件的应用

    2017-04-30 14:03

  • Java EE开发技术

    Java EE开发技术

    2017-02-11 13:00

网友点评