Listener学习笔记-- day01 监听器的使用
来源:互联网 发布:皇室战争数据 编辑:程序博客网 时间:2024/05/22 01:40
一、监听器
1、作用
Web可以通过监听器监听域对象的创建和销毁 ServletContext,Session,Request, 属性变更,javabean对象在session中的状态变更(绑定,解绑)
2、意义
观察服务器性能,粗略估计网站的当前的访问人数,网站并发量...
二、第一类监听器的使用
1、什么是第一类监听器
监听域对象的创建和销毁,这种监听器有实际应用意义
2、web.xml中配置监听器
<listener> <listener-class>cn.itcast.testListener.MyListener001</listener-class> </listener>
3、监听 servletContext 的生命周期
package cn.itcast.testListener;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;//测试ServletContext的创建和销毁//Servletcontext服务器启动就创建//Servletcontext服务器停止就销毁public class MyListener001 implements ServletContextListener { public MyListener001() { System.out.println("构造函数"); } /** * 初始化时执行的方法 */public void contextInitialized(ServletContextEvent sce) {System.out.println("ServletContext被创建了");ServletContext servletContext = sce.getServletContext();System.out.println(servletContext.hashCode());//此处的代码在服务器启动必须执行,类似于javaSe main函数所在类中的static代码段//监听ServletContext的应用场景://当我们自己定义设置了配置文件之后,希望在项目启动就将配置文件中的信息读取到,可以将读取配置文件的代码放置在此处//servletContext.setAttribute("", "");}/** * 销毁时执行的方法 */public void contextDestroyed(ServletContextEvent sce) {System.out.println("ServletContext被销毁了");ServletContext servletContext = sce.getServletContext();System.out.println(servletContext.hashCode());}}
4、监听 Session 的创建销毁
package cn.itcast.testListener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;// request.getSession();//session何时被创建? 服务端首次碰到request.getSession();//session何时被销毁? 1_超时 2_session.invalidate(); 3_非正常停止服务器public class MyListener002 implements HttpSessionListener { public MyListener002() { } public void sessionCreated(HttpSessionEvent se) { System.out.println("sessin被创建"); System.out.println(se.getSession()); } public void sessionDestroyed(HttpSessionEvent se) { System.out.println("sessin被销毁"); se.getSession(); }}
5、监听 Request 的创建销毁
package cn.itcast.testListener;import javax.servlet.ServletRequest;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;import javax.servlet.http.HttpServletRequest;//request何时创建? 只要对服务端发起请求(serlvet/jsp/html/css/js/png),request就会被创建public class MyListener003 implements ServletRequestListener {public MyListener003() {}public void requestDestroyed(ServletRequestEvent sre) {System.out.println("request销毁");}public void requestInitialized(ServletRequestEvent sre) {System.out.println("request创建");ServletRequest servletRequest = sre.getServletRequest();HttpServletRequest req = (HttpServletRequest) servletRequest;// day41/BuyServletreq.getRequestURL();}}
三、第二类监听器的使用
1、什么是第二类监听器
监听域对象中属性的变更,没有实际应用 意义,看懂即可
2、监听 servletContext 中域对象属性的变更
package cn.itcast.testListener;import javax.servlet.ServletContextAttributeEvent;import javax.servlet.ServletContextAttributeListener;/** * * @Description: 监听servletContext中域对象属性的变更 * @author wingzhe * @date 2017年7月14日 上午10:35:40 * @version V1.0 */public class MyListener004 implements ServletContextAttributeListener {public MyListener004() {}/* * 添加属性 */public void attributeAdded(ServletContextAttributeEvent scab) {System.out.println("servletcontext中被添加了属性");}public void attributeReplaced(ServletContextAttributeEvent scab) {System.out.println("servletcontext中的属性被替换了");}public void attributeRemoved(ServletContextAttributeEvent scab) {System.out.println("servletcontext中的属性被移除了");}}
3、监听 Session 中属性的变更
package cn.itcast.testListener;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;/** * * @Description: 监听session中属性的变更 * @author wingzhe * @date 2017年7月14日 上午10:41:00 * @version V1.0 */public class MyListener005 implements HttpSessionAttributeListener {public MyListener005() {}public void attributeRemoved(HttpSessionBindingEvent se) {System.out.println("session中的属性被移除了");}public void attributeAdded(HttpSessionBindingEvent se) {System.out.println("session中的属性被增加了");}public void attributeReplaced(HttpSessionBindingEvent se) {System.out.println("session中的属性被替换了");}}
4、监听 request 中属性的变更
package cn.itcast.testListener;import javax.servlet.ServletRequestAttributeEvent;import javax.servlet.ServletRequestAttributeListener;/** * * @Description: 监听request中属性的变更 * @author wingzhe * @date 2017年7月14日 上午10:41:36 * @version V1.0 */public class MyListener006 implements ServletRequestAttributeListener {public MyListener006() {}public void attributeAdded(ServletRequestAttributeEvent srae) {System.out.println("request中的属性被添加了");}public void attributeRemoved(ServletRequestAttributeEvent srae) {System.out.println("request中的属性被移除了");}public void attributeReplaced(ServletRequestAttributeEvent srae) {System.out.println("request中的属性被替换了");}}
四、第三类监听器
1、作用
监听 JavaBean 对象在 session 中状态的变更,包括绑定和解绑
2、应用
package cn.itcast.testListener;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionBindingListener;/** * * @Description: 监听javaBean在session中状态变更* @author wingzhe * @date 2017年7月14日 上午10:57:32 * @version V1.0 */public class MyListener007 implements HttpSessionBindingListener {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public MyListener007() {}public void valueUnbound(HttpSessionBindingEvent event) {System.out.println("bean对象被解绑了");}public void valueBound(HttpSessionBindingEvent event) {System.out.println("bean对象被绑定了");}}
<% MyListener007 ml=new MyListener007(); ml.setName("jack");//将JAVABEAN对象绑定在session中 session.setAttribute("demo", ml); //将JAVABEAN对象从session移除 session.removeAttribute("demo"); %>
3、测试JavaBean 对象的钝化活化
package cn.itcast.testListener;import java.io.Serializable;import javax.servlet.http.HttpSessionActivationListener;import javax.servlet.http.HttpSessionEvent;//测试JAVABean对象的钝化和活化//钝化:当session被保存到硬盘上的时候,session中关联的JAVABean对象也应该被保存到硬盘上,这个过程钝化//活化:当session从硬盘上加载到内存中的时候,session中关联的JAVABean对象也应该被加载到内存,,这个过程活化//如果想让某个JAVABEAN对象被持久化,这个JAVABEAND对象必须实现序列化接口public class MyListener008 implements HttpSessionActivationListener, Serializable {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public MyListener008() {}public void sessionDidActivate(HttpSessionEvent se) {System.out.println("javaBean对象被活化了");}public void sessionWillPassivate(HttpSessionEvent se) {System.out.println("javaBean对象被钝化了");}}
<% MyListener008 ml=new MyListener008(); ml.setName("jack");//将JAVABEAN对象绑定在session中 session.setAttribute("user", ml); %>
阅读全文
0 0
- Listener学习笔记-- day01 监听器的使用
- listener监听器学习笔记
- android监听器(Listener)的使用
- Listener监听器笔记
- Web项目中 Listener监听器的使用
- Spring自定义Listener(监听器)的使用
- 监听器(Listener)学习
- 监听器(Listener)学习进阶
- 监听器(Listener)快速学习
- 监听器(Listener)学习
- Listener监听器学习
- Listener监听器简单使用
- Servlet学习笔记(九):监听器Listener详解
- Servlet的监听器Listener
- 过滤器(Filter)、监听器(Listener)学习
- javaweb中使用Listener监听器
- Listener监听器之初使用
- Java监听器Listener使用详解
- HDU
- 设计模式之代理模式and装饰者模式
- MySQL复制表结构和内容到另一张表中的SQL语句
- Apache笔记
- 通过腾讯shuffle部署对shuffle过程进行详解
- Listener学习笔记-- day01 监听器的使用
- 怎么转载CSDN博客
- Caffe tutorial 之 前向与反向传播
- 加密芯片——摘要算法特点与应用注意事项
- pyhon 打包命令 笔记
- ItemDecoration解析(一) getItemOffsets
- Round 2 C
- cocoapods找不到第三方库Unable to find a pod with name, author, summary, or descriptionmatching
- 水题 第四站 HDU 1003 Max Sum