愿景:"让编程不再难学,让技术与生活更加有趣"
更多架构课程请访问 xdclass.net
目录
第2集 监听器实战ServletContextListener全局配置加载
第3集 监听器实战HttpSessionListener统计当前在线人数
第4集 监听器实战ServletRequestListener统计网站请求量
第1集 Javaweb开发核心之初识Listener监听器
简介:讲解Servlet里面的监听器Listener
-
什么是监听器:
- 监听器是一个实现了特定接口的普通Java类,用于监听其他对象的创建和销毁,监听其他对象的方法执行和属性改变;
- 声控灯开关
-
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干货文档” 即可领取