使用监听器记录网页访问

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用监听器来实现网页访问跟踪功能。本项目的目标是创建一个能够显示当前访问主页的用户数量的Web应用程序。

👀 预览

网页访客计数

🎯 任务

在这个项目中,你将学习:

  • 如何实现 MyListener.java 类来跟踪主页的访问次数。
  • 如何实现 index.jsp 文件来显示当前访客计数。
  • 如何在 web.xml 文件中配置 MyListener
  • 如何启动Tomcat服务器并测试应用程序。

🏆 成果

完成本项目后,你将能够:

  • 使用 HttpSessionListener 接口跟踪用户会话。
  • ServletContext 中存储和检索访客计数。
  • 在JSP文件中显示访客计数。
  • web.xml 文件中配置监听器。
  • 使用Tomcat启动并测试Web应用程序。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/ProgrammingTechniquesGroup(["`Programming Techniques`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/FileandIOManagementGroup(["`File and I/O Management`"]) java(("`Java`")) -.-> java/ConcurrentandNetworkProgrammingGroup(["`Concurrent and Network Programming`"]) java(("`Java`")) -.-> java/SystemandDataProcessingGroup(["`System and Data Processing`"]) java/ProgrammingTechniquesGroup -.-> java/scope("`Scope`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("`Classes/Objects`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("`OOP`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("`Interface`") java/FileandIOManagementGroup -.-> java/io("`IO`") java/ConcurrentandNetworkProgrammingGroup -.-> java/threads("`Threads`") java/ConcurrentandNetworkProgrammingGroup -.-> java/net("`Net`") java/SystemandDataProcessingGroup -.-> java/xml_dom4j("`XML/Dom4j`") subgraph Lab Skills java/scope -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/classes_objects -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/oop -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/interface -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/io -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/threads -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/net -.-> lab-300394{{"`使用监听器记录网页访问`"}} java/xml_dom4j -.-> lab-300394{{"`使用监听器记录网页访问`"}} end

实现 MyListener.java 类

在这一步中,你将学习如何实现 MyListener.java 类来跟踪主页的访问次数。

  1. 打开位于 ListenerProject/src/main/java/org/labex/listener 目录下的 MyListener.java 文件。

  2. 实现 MyListener 类,该类实现了 HttpSessionListener 接口。此接口提供了两个方法:sessionCreated()sessionDestroyed()

  3. sessionCreated() 方法中,执行以下操作:

    • HttpSessionEvent 对象中获取 ServletContext
    • ServletContext 中检索 "count" 属性。如果该属性为 null,则将其初始化为 1。否则,将计数加 1。
    • 将更新后的 "count" 属性设置回 ServletContext
  4. sessionDestroyed() 方法中,执行以下操作:

    • HttpSessionEvent 对象中获取 ServletContext
    • ServletContext 中检索 "count" 属性。如果计数大于 0,则将计数减 1。
    • 将更新后的 "count" 属性设置回 ServletContext

你的 MyListener.java 类应该如下所示:

package org.labex.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext context = se.getSession().getServletContext();
        Integer count = (Integer) context.getAttribute("count");

        if (count == null) {
            count = 1;
        } else {
            count++;
        }

        context.setAttribute("count", count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext context = se.getSession().getServletContext();
        Integer count = (Integer) context.getAttribute("count");

        if (count!= null && count > 0) {
            count--;
        }

        context.setAttribute("count", count);
    }
}
✨ 查看解决方案并练习

实现 index.jsp 文件

在这一步中,你将学习如何实现 index.jsp 文件来显示主页的访问次数。

  1. 打开位于 ListenerProject/src/main/webapp 目录下的 index.jsp 文件。

  2. 在 JSP 文件中,导入必要的类:

    • javax.servlet.ServletContext
    • javax.servlet.http.HttpServletRequest
  3. 实现一个名为 getVisitorsCount() 的方法,该方法将 HttpServletRequest 对象作为参数。在这个方法中,执行以下操作:

    • HttpServletRequest 对象中获取 ServletContext
    • ServletContext 中检索 "count" 属性。如果该属性为 null,则返回 0。否则,返回计数值。
  4. 在 JSP 文件中,通过调用 getVisitorsCount() 方法并将结果嵌入到 HTML 中来显示当前访客计数。

你的 index.jsp 文件应该如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page import="javax.servlet.ServletContext" %> <%@
page import="javax.servlet.http.HttpServletRequest" %>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Index Page</title>
  </head>
  <body>
    <%! public int getVisitorsCount(HttpServletRequest request) { ServletContext
    context = request.getServletContext(); Integer count = (Integer)
    context.getAttribute("count"); return (count!= null)? count : 0; } %>

    <h1>欢迎来到我的网站</h1>
    <p>当前访客数:<%= getVisitorsCount(request) %></p>
  </body>
</html>
✨ 查看解决方案并练习

在 web.xml 中配置监听器

在这一步中,你将学习如何在 web.xml 文件中配置 MyListener

  1. 打开位于 ListenerProject/src/main/webapp/WEB-INF 目录下的 web.xml 文件。

  2. web.xml 文件中添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- 定义你的监听器 -->
    <listener>
        <listener-class>org.labex.listener.MyListener</listener-class>
    </listener>

</web-app>

此配置会将 MyListener 类注册为Web应用程序中的监听器。

✨ 查看解决方案并练习

启动 Tomcat 服务器并测试应用程序

  1. 打开终端,使用以下命令导航到 ListenerProject 目录:

    cd ~/project/ListenerProject/
  2. 使用以下命令启动 Tomcat 服务器:

    mvn clean tomcat7:run
  3. 打开网页浏览器,访问 http://localhost:8080。你应该会看到显示当前访客计数的“欢迎来到我的网站”页面。

  4. 多次刷新页面,你应该会看到访客计数增加。

  5. 关闭浏览器并等待几分钟。再次刷新页面,你应该会看到访客计数减少。

恭喜!你已成功使用监听器实现了网页访问跟踪功能。

✨ 查看解决方案并练习

总结

恭喜!你已完成此项目。你可以在 LabEx 中练习更多实验以提升技能。

您可能感兴趣的其他 Java 教程