小滴课堂-学习笔记:Javaweb开发核心知识之Listener监听器

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 Javaweb开发核心之初识Listener监听器

第2集 监听器实战ServletContextListener全局配置加载

第3集 监听器实战HttpSessionListener统计当前在线人数

第4集 监听器实战ServletRequestListener统计网站请求量

干货文档


第1集 Javaweb开发核心之初识Listener监听器

简介:讲解Servlet里面的监听器Listener

  • 什么是监听器:

    • 监听器是一个实现了特定接口的普通Java类,用于监听其他对象的创建和销毁,监听其他对象的方法执行和属性改变;
    • 声控灯开关

    小滴课堂-学习笔记:Javaweb开发核心知识之Listener监听器_第1张图片

  • javaweb里面的监听器:

    • 作用:监听域对象的创建和销毁,比如request/session/context

    • 分类:

      • ServletContextLitener
      • HttpSessionListener
      • ServletRequestListener
  • 监听器的实现步骤: (1)创建一个普通的Java类 (2)让该类实现监听器的接口 (3)在该类中实现监听器接口的所有方法 (4)旧版的在web.xml文件中通过标签来配置监听器,新版使用 @WebListener

 

 

 

 

 

 

第2集 监听器实战ServletContextListener全局配置加载

简介:实战自定义ServletContext监听器

  • 使用场景:加载全局配置,初始化项目信息

  • web.xml配置

    
    
    
        
            url
            https://xdclass.net
        
    ​
        
            topic
            小滴课堂java高级工程师成长专题视频
        

     

  • 监听器开发

    
    
    
    @WebListener
    public class ContextListener implements ServletContextListener {
    ​
        @Override
        public void contextInitialized(ServletContextEvent sce) {
        
            System.out.println("ContextListener contextInitialized");
            ServletContext servletContext = sce.getServletContext();
            String url = servletContext.getInitParameter("url");
            String topic = servletContext.getInitParameter("topic");
        
            Config config = new Config();
            config.setTopic(topic);
            config.setUrl(url);
            servletContext.setAttribute("config",config);
        }
    ​
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
        
            System.out.println("ContextListener contextDestroyed");
        }
    }
    
    
    

     

第3集 监听器实战HttpSessionListener统计当前在线人数

简介:java监听器实战之HttpSessionListener统计当前在线人数

  • session使用场景

    • 和session相关操作,比如统计网站在线人数,当前服务器的负载情况等
  • ContextLisener配置

    
    
    
    //获取上下文对象
    ServletContext sc = sce.getServletContext();
    sc.setAttribute("onlineNum",0);
    

     

  • HttpSessionListener开发

    
    
    
    @WebListener
    public class SessionListener implements HttpSessionListener {
    ​
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("SessionListener sessionCreated");
        
            ServletContext servletContext  = se.getSession().getServletContext();
        
            //获取在线人数
            Integer onlineNum = (Integer)servletContext.getAttribute("onlineNum");
        
            //新增1
            servletContext.setAttribute("onlineNum",++onlineNum);
        
        }
    ​
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("SessionListener sessionDestroyed");
        
            ServletContext servletContext  = se.getSession().getServletContext();
        
            //获取在线人数
            Integer onlineNum = (Integer)servletContext.getAttribute("onlineNum");
        
            //减少1
            servletContext.setAttribute("onlineNum",--onlineNum);
        
        }
    }

     

  • add.jsp

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        小滴课堂javaweb统计在线人数
    ​ 近30分钟在线人数: ${applicationScope.onlineNum}

     

  • delete.jsp

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        小滴课堂 xdclass.net 专题课程
    
    
    ​
    销毁session
    
    <% request.getSession().invalidate(); %>

     

  • 注意:

    • 关闭启动tomcat自动打开浏览器,因为会触发会触发多个session
    • 使用多个浏览器测试 粗略统计,如果是多机器分布式情况,需要用到分布式缓存

 

第4集 监听器实战ServletRequestListener统计网站请求量

简介:实战ServletRequestListener统计网站请求量

 

  • ContextLisener配置

    
    
    
    //获取上下文对象
    ServletContext sc = sce.getServletContext();
    sc.setAttribute("onlineNum",0);
    sc.setAttribute("totalVisit",0);
    

     

  • RequestListener开发

    
    
    
    @WebListener
    public class SessionListener implements HttpSessionListener {
    ​
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("SessionListener sessionCreated");
        
            ServletContext servletContext  = se.getSession().getServletContext();
        
            //获取在线人数
            Integer onlineNum = (Integer)servletContext.getAttribute("onlineNum");
        
            //新增1
            servletContext.setAttribute("onlineNum",++onlineNum);
        
        }
    ​
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("SessionListener sessionDestroyed");
        
            ServletContext servletContext  = se.getSession().getServletContext();
        
            //获取在线人数
            Integer onlineNum = (Integer)servletContext.getAttribute("onlineNum");
        
            //减少1
            servletContext.setAttribute("onlineNum",--onlineNum);
        
        }
    }
    

     

  • add.jsp

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    ​
    
        小滴课堂javaweb统计在线人数
    ​ 近30分钟在线人数: ${applicationScope.onlineNum}
    应用服务器启动后总访问次数:${totalVisit}

     

干货文档

                                                        关注公众号发送:“CSDN干货文档”  即可领取

你可能感兴趣的:(HTTP,JAVA,网站架构,java,编程语言,servlet,web,spring)