bugstar

导航

16.监听器-基础.md

概念

  • 实现特定接口的普通java类
    *监听特定对象的创建、销毁或属性变化:
    • 对象自己创建自己用:无需监听

    • 对象别人创建自己用:需要监听

    • Servlet中需要监听的对象:

      • Request--->request监听器

      • session--->session相关监听器

      • servletContext---->servletContext监听器

监听器功能

监听创建或销毁

  • Interface ServletRequestListener 监听request对象的创建或销毁
  • Interface HttpSessionListener 监听session对象的创建或销毁
  • Interface ServletContextListener 监听servletContext对象的创建或销毁

Demo:

package per.liyue.code.listener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class ServletRequestListenerDemo implements ServletRequestListener {
    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
                //获取值
        Object obj = sre.getServletRequest().getAttribute("testName");
        System.out.println("获取到的属性值为:" + obj);        
                System.out.println("销毁对象时候操作...");
        
    }
    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("创建对象时候操作...");        
    }
}
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
    This is my JSP page. <br>
        <%request.setAttribute("testName", "testvalue"); %>  
  </body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>WebDemo2</display-name>
  
  <listener>
      <listener-class>per.liyue.code.listener.ServletRequestListenerDemo</listener-class>
  </listener>
</web-app>  

监听属性变化

  • Interface ServletRequestAttributeListener 监听request对象属性变化: 添加、移除、修改

  • Interface HttpSessionAttributeListener 监听session对象属性变化: 添加、移除、修改

  • Interface ServletContextAttributeListener 监听servletContext对象属性变化

session相关监听

  • Interface HttpSessionBindingListener 监听对象绑定到session上的事件
  • Interface HttpSessionActivationListener(了解) 监听session序列化及反序列化的事件

posted on 2018-03-06 10:01  bugstar  阅读(120)  评论(0编辑  收藏  举报