zoukankan      html  css  js  c++  java
  • Servlet监听器

    Listener接口和Event类:
    Listener接口    Event类
    ServletContextListener    ServletContextEvent
    ServletContextAttributeListener    ServletContextAttributeEvent
    HttpSessionListener    HttpSessionEvent
    HttpSessionActivationListener    
    HttpSessionAttributeListener    HttpSessionBingdingEvent
    HttpSessionBindingListener    
    ServletRequestLitener    ServletRequestEvent
    ServletRequestAttributeListener    ServletRequestAttributeEvent
    
    
    监听Servlet上下文:
    1、    ServletContextListener接口主要监听ServletContext的创建和删除。它提供了两个方法,也称“Web应用程序的生命周期方法“。
    contextInitialized(ServletContextEvent  event)方法:通知正在收听的对象应用程序已经被加载及初始化。
    contextDestroyed(ServletContextEvent  event)方法:通知正在收听的对象应用程序已经被注销。
    2、    ServletContextAttributeListener接口主要监听ServletContext属性的增加、删除及修改。它提供了三个方法:
    attributeAdded(ServletContextAttributeEvent  event)方法:若有对象加入到application的范围,通知正在收听的对象。
    attributeRepleaced(ServletContextAttributeEvent  event)方法:若在application范围内一个对象取代另一个对象,通知正在收听的对象。
    attributeRemoved(ServletContextAttributeEvent  event)方法:若有对象从application范围移除,通知正在收听的对象。
    
    监听Http会话:
    1、    HttpSessionListener接口监听Http会话的创建及销毁。提供了2个方法:
    sessionCreated(HttpSessionEvent  event)方法:通知正在收听的对象,session已经被加载及初始化。
    sessionDestroyed(HttpSessionEvent  event)方法:通知正在收听的对象,session已经被注销。
    2、    HttpSessionActivationListener接口监听Http会话active和passivate情况,提供3个方法:
    attributeAdded(HttpSessionBindingEvent  even)方法:若有对象加入session的范围,通知正在收听的对象。
    attributeReplaced(HttpSessionBindingEvent  even)方法:如有对象在Session范围内被替换,通知正在收听的对象。
    attributeRemoved(HttpSessionBindingEvent  even)方法:若有对象在Session范围内被删除,通知正在收听的对象。
    3、    HttpSessionBindingListener接口监听Http会话中对象的绑定信息,它是唯一不需要在web.xml中设置Listener的。它提供了2个方法:
    valueBound(HttpSessionBindingEvent  event)方法:当有对象加入Session范围是,会被自动调用。
    valueUnBound(HttpSessionBindingEvent  event)方法:当有对象从Session范围内删除时,会被自动调用。
    4、    HttpSessionAttributeListener接口监听Http会话中属性的设置请求,它提供2个方法:
    sessionDidActivate(HttpSessionEvent  event)方法:通知正在收听的对象,其Session已经变为有效状态。
    sessionWillPassivate(HttpSessionEvent  event)方法:通知正在收听的对象,其Session已经变为无效状态。
    
    监听Servlet请求:
    1、    ServletRequestListener接口监听客户的请求信息。提供2个方法:
    requestInitalized(ServletRequestEvent  event)方法:通知正在收听的对象,ServletRequest已经被加载及初始化。
    requestDestroyed(ServletRequestEvent  event)方法:通知正在收听的对象,ServletRequest已经被删除。
    2、    ServletRequestAttributeListener接口监听客户请求的对象信息:提供3个方法:
    attributeAdded(ServletRequestAttributeEvent  event)方法:若有对象加入到Request范围,通知正在收听的对象。
    attributeReplaced(ServletRequestAttributeEvent  event)方法:若有对象在Request范围被替换,通知正在收听的对象。
    attributeRemoved(ServletRequestAttributeEvent  event)方法:如有对象在Request范围被删除,通知正在收听的对象。
    
    监听用户的实例:
    
    Student类:
    package com.wgh;
    
    
    public class Student {
        private String name;
        private int age;
        private String address;
        //无参构造函数
        public void Student(){}
        //有参构造函数
        public void Student(String name,int age,String  address){
            this.name=name;
            this.age=age;
            this.address=address;
            
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    
    监听Student用户代码:
    
    package com.wgh;
    
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionBindingListener;
    
    /**
     * Application Lifecycle Listener implementation class StudentTrace
     *
     */
    @WebListener
    public class StudentTrace implements HttpSessionBindingListener {
        private String name;
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        
        
    
        /**
         * Default constructor. 
         */
        public StudentTrace() {
            // TODO Auto-generated constructor stub
            name="";
        }
    
        /**
         * @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)
         */
        public void valueBound(HttpSessionBindingEvent arg0)  { 
             // TODO Auto-generated method stub
            System.out.println("上线"+this.name);
        }
    
        /**
         * @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)
         */
        public void valueUnbound(HttpSessionBindingEvent arg0)  { 
             // TODO Auto-generated method stub
            System.out.println("下线"+this.name);
        }
        
    }
    
    
    Jsp页面代码:
    
    <%@ page import="java.util.*" %>
    <%@ page import="com.wgh.*" %>
    ……省略一部分代码
    
    <%
    //获得用户名
    
    Student stu=new Student();
    StudentTrace st=new StudentTrace();
    request.setCharacterEncoding("UTF-8");
    
    String name=request.getParameter("username");
    st.setName(name);
    session.setAttribute("stu", st);
    
    session.setMaxInactiveInterval(10);
    %>
  • 相关阅读:
    bzoj 4197 寿司晚宴
    Codeforces Round #429 (Div. 2)ABC
    Codeforces Round #386 (Div. 2) E
    UESTC 电子科大专题训练 数论 L
    UESTC 电子科大专题训练 数论 E
    Codeforces Round #396 D
    UESTC 电子科大专题训练 DP-E
    UESTC 电子科大专题训练 数据结构 L
    UESTC 电子科大专题训练 数据结构 K
    UESTC 电子科大专题训练 数据结构-E
  • 原文地址:https://www.cnblogs.com/gynbk/p/6556311.html
Copyright © 2011-2022 走看看