好记性不如烂笔头42-javaWeb监听对象域属性变化(6)
2015-02-09 11:08
821 查看
好记性不如烂笔头42-javaWeb监听对象域属性变化(6)
JavaWeb中对象域的属性的变更的事件监听器,可以用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。
这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。
1、 attributeAdded 方法
当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象
各个域属性监听器中的完整语法定义为:
1 public void attributeAdded(ServletContextAttributeEvent scae)
2 public void attributeReplaced(HttpSessionBindingEvent hsbe)
3 public void attributeRmoved(ServletRequestAttributeEvent srae)
2、 attributeRemoved 方法
当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeRemoved(ServletContextAttributeEvent scae)
2 public void attributeRemoved (HttpSessionBindingEvent hsbe)
3 public void attributeRemoved (ServletRequestAttributeEvent srae)
3、 attributeReplaced 方法
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeReplaced(ServletContextAttributeEvent scae)
2 public void attributeReplaced (HttpSessionBindingEvent hsbe)
3 public void attributeReplaced (ServletRequestAttributeEvent srae)
4、 编写监听ServletContext域对象的属性变化的源代码
实现ServletContextAttributeListener接口,监听对象域属性的变化
5、 修改web.xml
6、 测试用的index.jsp
7、 运行结果
启动WEB中间件,从URL访问:
http://127.0.0.1:8080/webStudy/index.jsp
控制台输结果:
ServletContext域对象中添加了属性:name,属性值是:ffm
ServletContext域对象中替换了属性:name的值,原始值为ffm
ServletContext域对象中删除属性:name,属性值是:123
8、 其他
因为这三个对象域的实现方式类似,因此其他两个具体的实现也可以完全参考本源代码;
JavaWeb中对象域的属性的变更的事件监听器,可以用来监听 ServletContext, HttpSession, HttpServletRequest 这三个对象中的属性变更信息事件的监听器。
这三个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener 和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。
1、 attributeAdded 方法
当向被监听对象中增加一个属性时,web容器就调用事件监听器的attributeAdded方法进行响应,这个方法接收一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象
各个域属性监听器中的完整语法定义为:
1 public void attributeAdded(ServletContextAttributeEvent scae)
2 public void attributeReplaced(HttpSessionBindingEvent hsbe)
3 public void attributeRmoved(ServletRequestAttributeEvent srae)
2、 attributeRemoved 方法
当删除被监听对象中的一个属性时,web容器调用事件监听器的attributeRemoved方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeRemoved(ServletContextAttributeEvent scae)
2 public void attributeRemoved (HttpSessionBindingEvent hsbe)
3 public void attributeRemoved (ServletRequestAttributeEvent srae)
3、 attributeReplaced 方法
当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的attributeReplaced方法进行响应
各个域属性监听器中的完整语法定义为:
1 public void attributeReplaced(ServletContextAttributeEvent scae)
2 public void attributeReplaced (HttpSessionBindingEvent hsbe)
3 public void attributeReplaced (ServletRequestAttributeEvent srae)
4、 编写监听ServletContext域对象的属性变化的源代码
实现ServletContextAttributeListener接口,监听对象域属性的变化
[code] package com.servlet.listener; import java.text.MessageFormat; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; /** * 简单实现ServletContextAttributeListener接口,监听对象域属性的变化 * @author 范芳铭 */ public class EasyServletContextAttributeListener implements ServletContextAttributeListener{ @Override public void attributeAdded(ServletContextAttributeEvent scab) { String str =MessageFormat.format( "ServletContext域对象中添加了属性:{0},属性值是:{1}" ,scab.getName() ,scab.getValue()); System.out.println(str); } @Override public void attributeRemoved(ServletContextAttributeEvent scab) { String str =MessageFormat.format( "ServletContext域对象中删除属性:{0},属性值是:{1}" ,scab.getName() ,scab.getValue()); System.out.println(str); } @Override public void attributeReplaced(ServletContextAttributeEvent scab) { String str =MessageFormat.format( "ServletContext域对象中替换了属性:{0}的值,原始值为{1}" ,scab.getName() ,scab.getValue()); System.out.println(str); } }
5、 修改web.xml
[code] <listener> <description>EasyServletContextAttributeListener监听器</description> <listener-class>com.servlet.listener.EasyServletContextAttributeListener</listener-class> </listener>
6、 测试用的index.jsp
[code] <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> HttpSession创建后的Id是:${pageContext.session.id} <br> <% //往application域对象中添加属性 application.setAttribute("name", "ffm"); //替换application域对象中name属性的值 application.setAttribute("name", "123"); //移除application域对象中name属性 application.removeAttribute("name"); %> </body> </html>
7、 运行结果
启动WEB中间件,从URL访问:
http://127.0.0.1:8080/webStudy/index.jsp
控制台输结果:
ServletContext域对象中添加了属性:name,属性值是:ffm
ServletContext域对象中替换了属性:name的值,原始值为ffm
ServletContext域对象中删除属性:name,属性值是:123
8、 其他
因为这三个对象域的实现方式类似,因此其他两个具体的实现也可以完全参考本源代码;
相关文章推荐
- 好记性不如烂笔头38-java监听windows窗口事件Listener(2)
- 好记性不如烂笔头43-javaWeb中Session相关事件监听器(7)
- 好记性不如烂笔头-java接口只能声明对象,但不能实例化对象
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- 好记性不如烂笔头10-WEB应用常见中文数据乱码问题总结
- 好记性不如烂笔头24-JAVA处理数据库事务(2) - 脏数据
- 好记性不如烂笔头37-java应用中的监听器Listener(1)
- 好记性不如烂笔头30-java应用中的过滤器Filter(2)
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- 好记性不如烂笔头8-JAVA读取EXCEL文件
- 好记性不如烂笔头25-JAVA处理数据库事务(3) - 事务回滚点
- 好记性不如烂笔头17-java中的javaBean
- 好记性不如烂笔头32-java通过过滤器加载常用数据(4)
- 好记性不如烂笔头2-JAVA日期类型和转换
- 好记性不如烂笔头26-JAVA处理文件事务(4)
- IPHONE 和 KVC/KVO 监听对象属性变化(例如:获取textView 的text的变化)
- 好记性不如烂笔头4-JAVA生成PDF文件
- 好记性不如烂笔头5-JAVA快速文件拷贝
- 好记性不如烂笔头31-java应用中的敏感词过滤实现(3)
- 记性不如烂笔头29-java应用中的过滤器Filter(1)