Javaweb监听器(2)
属性监听器:ServletRequestAtttributeListener/HttpSeessionAttributeListener/ServletContextAttributeListener
这里可以直接拿HttpSeessionAttributeListener来示例
首先来写一个实现他的接口类:
package comgqx.b_attr;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MySesssionAttribute implements HttpSessionAttributeListener{
//属性添加
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
//首先要获取session
HttpSession session=event.getSession();
//获取添加的属性
Object object=session.getAttribute("name");
System.out.println("添加的属性是:"+object);
}
//属性移除
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
System.out.println("属性移除了!");
}
//属性被替换
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
//获取session对象
HttpSession session=event.getSession();
// 获取替换之前的值
Object oldObject=event.getValue();
System.out.println("旧值:"+oldObject);
//获取新值
Object object=session.getAttribute("name");
System.out.println("新的sessiom值是:"+object);
}
}
来写一个jsp页面,写一句简单的话
session.setAttribute("name", "gqxing");
配置到服务器上去(web.xml)
<!-- 属性监听器Session --> <listener> <listener-class>comgqx.b_attr.MySesssionAttribute</listener-class> </listener>
访问相关的jsp页面可以看到如下结果:

然后我们在jsp去修改代码如下:
session.setAttribute("name", "gqxing");
//属性移除
session.removeAttribute("name");
清除缓存后,继续去访问,发现先关的语句被执行了。如下:

继续去修改jsp页面,如下,来些事替换session中的相关值
<% session.setAttribute("name", "gqxing");
//属性移除
//session.removeAttribute("name");
//属性替换
session.setAttribute("name", "test");
%>
清除缓存,继续访问,就会看到替换的语句,这里要注意的是,我们不经在HttpSessionAttributeListener的实现类的attributeReplaced()方法中得到新的值,还可以通过getValue()方法得到被替换的旧值,如下:

HttpSessionBindingListener:监听对象绑定、解除绑定到session上的事件
步骤:
对象实现此接口,在把对象绑定、解除绑定带session上就会自动触发监听代码。
示例代码:
package comgqx.b_attr;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MySesssionAttribute implements HttpSessionAttributeListener{
//属性添加
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
//首先要获取session
HttpSession session=event.getSession();
//获取添加的属性
Object object=session.getAttribute("name");
System.out.println("添加的属性是:"+object);
}
//属性移除
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
System.out.println("属性移除了!");
}
//属性被替换
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
// TODO Auto-generated method stub
//获取session对象
HttpSession session=event.getSession();
// 获取替换之前的值
Object oldObject=event.getValue();
System.out.println("旧值:"+oldObject);
//获取新值
Object object=session.getAttribute("name");
System.out.println("新的sessiom值是:"+object);
}
}
在jsp页面写入如下代码:
session.setAttribute("admin", new Admin());
session.removeAttribute("admin");
然后去访问,会看到控制台的看到如下的结果(有时候没有清楚缓存,在测试这个的时候会发现一些语句会重复,如若是第一次访问是去创建Admin对象,没有加入清除对象的语句,第二次加入清除对象的语句,再去访问,会看到两句“Admin对象已经从session中移除了!”的语句)

应用举例:可以作为上线提醒,比如qq,当一个好友上线的时候,系统会提示你的好友“****”上线了
HttpSessionBindingListener和前面的声明周期属性的监听器的区别是:
不用再web.xml上配置,因为监听的对象是自己创建的对象,不是服务器创建的对象。
Javaweb监听器(2)的更多相关文章
- JavaWeb监听器详解
1 JavaWeb监听器概述 在JavaWeb被监听的事件源为:ServletContext.HttpSession.ServletRequest,即三大域对象.有监听域对象"创建" ...
- 十四、JavaWeb监听器
JavaWeb监听器 三大组件: l Servlet l Listener l Filter Listener:监听器 初次相见:AWT 二次相见:SAX 监听器: l 它是一个接口,内容由我们来实现 ...
- Javaweb学习笔记——(二十)——————Javaweb监听器、国际化
Javaweb监听器 三大组件 *Servlet *Listener *Filter Listener:监听器 1.初次相见:A ...
- Day20 javaWeb监听器和国际化
day20 JavaWeb监听器 三大组件: Servlet Listener Filter Listener:监听器 初次相见:AWT 二次相见:SAX 监听器: 它是一个接口,内容由我们来 ...
- javaweb监听器实现与原理
参考:https://www.cnblogs.com/lxp503238/p/6678688.html https://blog.csdn.net/CPOHUI/article/details/888 ...
- JavaWEB监听器
1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象 ...
- JavaWeb—监听器Listener
1.简介 Listener是Servlet的监听器,Servlet 监听器用于监听一些重要事件的发生,监听器对象在事情发生前.发生后可以做一些必要的处理. JavaWeb里面的listener是通过观 ...
- JAVAWEB监听器(二)
监听域对象中属性的变更的监听器 域对象中属性的变更的事件监听器就是用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事 ...
- Java-Web监听器
在WEB端实现监听实质: 实现一系列的监听接口(实现相应的接口,覆写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的覆写的方法,在各个方法中完成自己想要的操作,从而实现了监听) 监听- ...
随机推荐
- [转]ASP.NET 页生命周期概述
原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.110).aspx 对应版本:.NET 4.0 ASP.NET 页运行时,此页将 ...
- curl命令访问域名
1.前言 curl是利用URL语法在命令行方式下工作的开源文件传输工具(来自百度百科).cURL 是一种简单有效的工具,可以使用cURL工具进行WEB相关的调试开发工具,相对于Yeelink这样的云平 ...
- ubuntun安装ssh,并远程链接服务器操作
SSH是一种以安全.加密方式连接远程主机或服务器的方法.SSH服务器接受从有SSH的客户机的连接,允许操作者象在本地一样地登录系统.你可以用SSH从远程运行shell和X程序. (1)安装SSH服务器 ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- solr4.5配置中文分词器mmseg4j
solr4.x虽然提供了分词器,但不太适合对中文的分词,给大家推荐一个中文分词器mmseg4j mmseg4j的下载地址:https://code.google.com/p/mmseg4j/ 通过以下 ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- JAVA数据库处理(连接,数据查询,结果集返回)
package john import java.io.IOException; import java.util.*; public class QueryDataRow { public Hash ...
- 1048 图的宽度优先遍历序列 c语言
描述 图(graph)是数据结构 G=(V,E),其中V是G中结点的有限非空集合,结点的偶对称为边(edge):E是G中边的有限集合.设V={0,1,2,……,n-1},图中的结点又称为顶点(vert ...
- Android http协议实现文件下载
用http协议下载文件,主要用到的是httpURLConnection对象,主要的步骤如下: 1. 创建HttpURLConnection对象 2.获得一个InputStream对象 3.修改权限:访 ...
- 【Android】如何使用安卓的logcat『整理』
logcat是Android中一个命令行工具,可以用于得到程序的log信息.开发调试和测试定位bug都挺有用哒 有两种方式可以达到查看log的目的. 一 Eclipse集成DDMS插件 1 安装ecl ...