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

33 篇文章 0 订阅
14 篇文章 0 订阅

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


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

目录

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

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

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

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

干货文档


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

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

  • 什么是监听器:

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

    timg

  • javaweb里面的监听器:

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

    • 分类:

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

 

 

 

 

 

 

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

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

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

  • web.xml配置

    
    
    
        <context-param>
            <param-name>url</param-name>
            <param-value>https://xdclass.net</param-value>
        </context-param>
    ​
        <context-param>
            <param-name>topic</param-name>
            <param-value>小滴课堂java高级工程师成长专题视频</param-value>
        </context-param>

     

  • 监听器开发

    
    
    
    @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" %>
    <html>
    <head>
        <title>小滴课堂javaweb统计在线人数</title>
    </head>
    <body>
    ​
    <hr>
    ​
    近30分钟在线人数: ${applicationScope.onlineNum}
    </body>
    </html>
    

     

  • delete.jsp

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

     

  • 注意:

    • 关闭启动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" %>
    <html>
    ​
    <head>
        <title>小滴课堂javaweb统计在线人数</title>
    </head>
    <body>
    ​
    <hr>
    ​
    近30分钟在线人数: ${applicationScope.onlineNum}
    <hr>
    应用服务器启动后总访问次数:${totalVisit}
    </body>
    </html>
    
    
    

     

干货文档

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值