• 监听器


    监听器是专门用于对其他对象身上发生的事件或状态改变进行监视和响应处理的对象

    监听应用程序环境(ServletContext)

    监听会话对象(HttpSession)

    监听请求消息对象(ServletRequest)

    监听啥:监听他们的创建和销毁【监听生死】

    例如监听session的生死:就可以统计出当前服务器在线人数

    package com.zy.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    /**
     * Application Lifecycle Listener implementation class MySessionListener
     *注解版监听器-----不需要再web.xml配置
     */
    @WebListener
    public class MySessionListener implements HttpSessionListener {
        //
        int num=0;
        public void sessionCreated(HttpSessionEvent se)  { 
             // 每次创建一个会话会执行该方法
            
            //往域中存取要用servletContext,因为人数要一直保存,除非服务器关闭
            ServletContext servletContext = se.getSession().getServletContext();
            Object o = servletContext.getAttribute("num");
            
            if(o==null){
                num=1;
            }else{
                num=(int)o;
                num++;
                
            }
            servletContext.setAttribute("num", num);
        
        
        }
    
        //
        public void sessionDestroyed(HttpSessionEvent se)  { 
             // 每次销毁一个会话会执行该方法
            ServletContext servletContext = se.getSession().getServletContext();
            int a = (int)servletContext.getAttribute("num");
            a--;
            servletContext.setAttribute("num", a);
        }
        
    }
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <center><h2>中国淘宝</h2></center>
    此时在线人数是${num}人
    <a href="over.jsp">手动结束session</a>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- 用脚本结束session -->
    <%
    session.invalidate();//关闭浏览器session不一定销毁(缓存)当前session作废(销毁)
    %>
    <h2>欢迎来到这里销毁session</h2>
    </body>
    </html>
  • 相关阅读:
    python爬虫实例--爬取拉勾网
    面试时,如何回答你还有什么想要了解的?
    深入理解三次握手四次挥手以及使用scapy实现ddos雏形
    解决socket粘包的两种low版模式 os.popen()和struct模块
    浅谈osi模型 三次握手 四次挥手 ddos攻击原理
    渲染相关书籍
    unity 场景编辑器物体加图标
    音乐模拟器
    3d服装制作软件
    uv投影插值
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11177958.html
Copyright © 2020-2023  润新知