JavaWeb-Servlet技术的监听器-解析与实例-网站在线用户信息与网页点击量(2)

简介: JavaWeb-Servlet技术的监听器-解析与实例-网站在线用户信息与网页点击量

MyHttpSessionListener

统计在线人的信息

package cn.hncu.listeners;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyHttpSessionListener implements HttpSessionListener {
    //有 游客/用户 来访问了
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        List<HttpSession> guests = (List<HttpSession>) se.getSession().getServletContext().getAttribute("guests");//在线人的集合
        if(guests==null){//第一个访问网站的人--沙发
            guests = new ArrayList<HttpSession>();
            se.getSession().getServletContext().setAttribute("guests", guests);//设置guests属性
        }
        guests.add(se.getSession());//将第一个用户的session添加到在线人集合
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        List<HttpSession> guests = (List<HttpSession>) se.getSession().getServletContext().getAttribute("fuses");
        if(guests.contains(se.getSession())){
            guests.remove(se.getSession());
        }
    }
}

MyHttpSessionAttributeListener

统计在线用户的信息:

package cn.hncu.listeners;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener{
    //session添加属性了,就会调用下面的attributeAdded方法
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        if(se.getName().equals("name")){//代表添加了name属性
            System.out.println("用户"+se.getValue()+"登录了");
            List<HttpSession> logins = (List<HttpSession>) se.getSession().getServletContext().getAttribute("logins");
            if(logins==null){
                logins = new ArrayList<HttpSession>();
                se.getSession().getServletContext().setAttribute("logins", logins);
            }
            logins.add(se.getSession());
        }
    }
    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
    }
    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
  <filter>
    <filter-name>charset</filter-name>
    <filter-class>cn.hncu.filter.CharsetFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>charset</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>cn.hncu.listeners.MyServletContextListener</listener-class>
  </listener>
  <listener>
    <listener-class>cn.hncu.listeners.MyServletRequestListenr</listener-class>
  </listener>
  <listener>
    <listener-class>cn.hncu.listeners.MyHttpSessionAttributeListener</listener-class>
  </listener>
  <listener>
    <listener-class>cn.hncu.listeners.MyHttpSessionListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ShowServlet</servlet-name>
    <servlet-class>cn.hncu.servlets.ShowServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/servlet/LoginServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ShowServlet</servlet-name>
    <url-pattern>/servlet/ShowServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

演示结果:

image.png

完整源码链接:

https://github.com/chenhaoxiang/Java/tree/master/myOnlinesWeb

myOnlinesWeb.zip文件。

目录
相关文章
|
5天前
|
Web App开发 存储 缓存
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
|
5天前
|
消息中间件 前端开发 JavaScript
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
|
5天前
|
编解码 前端开发 JavaScript
第六篇 提升网页性能:深入解析HTTP请求优化策略(一)
第六篇 提升网页性能:深入解析HTTP请求优化策略(一)
|
6天前
|
图形学
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
9 0
|
6天前
|
负载均衡
Servlet 教程 之 Servlet 网页重定向 1
Servlet教程展示了如何实现网页重定向。使用`HttpServletResponse`的`sendRedirect()`方法或结合`setStatus()`和`setHeader()`可将请求转向新位置。示例代码创建了一个Servlet,名为`PageRedirect`,在接收到请求时重定向至百度首页。配置`web.xml`后,通过访问`http://localhost:8080/PageRedirect`即可触发重定向。
15 6
|
6天前
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
26 3
|
6天前
|
Python
使用Python解析网页和正则表达式
使用Python解析网页涉及`requests`和`re`模块。首先导入这两个模块,然后用`requests.get()`发送HTTP请求获取URL内容。通过`.text`属性得到HTML文本。接着,利用正则表达式和`re.search()`匹配特定模式(如网页标题),并用`.group(1)`获取匹配数据。最后,对提取的信息进行处理,如打印标题。实际操作时,需根据需求调整正则表达式。
19 2
|
6天前
|
并行计算 Java API
【专栏】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为
【4月更文挑战第27天】Java 8的Lambda表达式增强了函数式编程,允许以匿名函数形式传递行为。其基本语法`(params) -> expression/statements`,类型由参数推断,可引用final或effectively final的外部变量。Lambda广泛应用于集合操作(如Stream API)、并行流处理和GUI事件处理,简化代码并提高效率。通过实例,展示了Lambda在集合筛选、并行计算和事件处理中的应用,从而提高开发质量和效率。
|
6天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
6天前
|
存储 SQL 关系型数据库
MySQL数据库:深入解析与应用实例
MySQL数据库:深入解析与应用实例
41 0

推荐镜像

更多