Registro de accesos a páginas web utilizando oyentes

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderá a implementar una funcionalidad de seguimiento del acceso a una página web mediante un oyente. El objetivo de este proyecto es crear una aplicación web que pueda mostrar el número de usuarios que actualmente están accediendo a la página principal.

👀 Vista previa

conteo de visitantes de la página web

🎯 Tareas

En este proyecto, aprenderá:

  • Cómo implementar la clase MyListener.java para registrar el número de visitas a la página principal.
  • Cómo implementar el archivo index.jsp para mostrar el conteo actual de visitantes.
  • Cómo configurar el MyListener en el archivo web.xml.
  • Cómo iniciar el servidor Tomcat y probar la aplicación.

🏆 Logros

Después de completar este proyecto, podrá:

  • Utilizar la interfaz HttpSessionListener para registrar las sesiones de usuario.
  • Almacenar y recuperar el conteo de visitantes en el ServletContext.
  • Mostrar el conteo de visitantes en un archivo JSP.
  • Configurar un oyente en el archivo web.xml.
  • Iniciar y probar una aplicación web utilizando Tomcat.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) 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/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{{"Registro de accesos a páginas web utilizando oyentes"}} java/classes_objects -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/oop -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/interface -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/io -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/threads -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/net -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} java/xml_dom4j -.-> lab-300394{{"Registro de accesos a páginas web utilizando oyentes"}} end

Implementar la clase MyListener.java

En este paso, aprenderá a implementar la clase MyListener.java para registrar el número de visitas a la página principal.

  1. Abra el archivo MyListener.java ubicado en el directorio ListenerProject/src/main/java/org/labex/listener.

  2. Implemente la clase MyListener, que implementa la interfaz HttpSessionListener. Esta interfaz proporciona dos métodos: sessionCreated() y sessionDestroyed().

  3. En el método sessionCreated(), realice lo siguiente:

    • Obtenga el ServletContext del objeto HttpSessionEvent.
    • Recupere el atributo "count" del ServletContext. Si el atributo es nulo, agréguelo con un valor de 1. De lo contrario, incremente el contador en 1.
    • Establezca el atributo "count" actualizado nuevamente en el ServletContext.
  4. En el método sessionDestroyed(), realice lo siguiente:

    • Obtenga el ServletContext del objeto HttpSessionEvent.
    • Recupere el atributo "count" del ServletContext. Si el contador es mayor que 0, disminúyalo en 1.
    • Establezca el atributo "count" actualizado nuevamente en el ServletContext.

Su clase MyListener.java debería verse así:

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);
    }
}
✨ Revisar Solución y Practicar

Implementar el archivo index.jsp

En este paso, aprenderá a implementar el archivo index.jsp para mostrar el número de visitas a la página principal.

  1. Abra el archivo index.jsp ubicado en el directorio ListenerProject/src/main/webapp.

  2. En el archivo JSP, importe las clases necesarias:

    • javax.servlet.ServletContext
    • javax.servlet.http.HttpServletRequest
  3. Implemente un método llamado getVisitorsCount() que tome un objeto HttpServletRequest como parámetro. En este método, realice lo siguiente:

    • Obtenga el ServletContext del objeto HttpServletRequest.
    • Recupere el atributo "count" del ServletContext. Si el atributo es nulo, devuelva 0. De lo contrario, devuelva el valor del contador.
  4. En el archivo JSP, muestre el conteo actual de visitantes llamando al método getVisitorsCount() y embebiendo el resultado en el HTML.

Su archivo index.jsp debería verse así:

<%@ 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>Página de Índice</title>
  </head>
  <body>
    <%! public int getVisitorsCount(HttpServletRequest request) { ServletContext
    context = request.getServletContext(); Integer count = (Integer)
    context.getAttribute("count"); return (count!= null)? count : 0; } %>

    <h1>Bienvenido a mi Sitio Web</h1>
    <p>Visitantes actuales: <%= getVisitorsCount(request) %></p>
  </body>
</html>
✨ Revisar Solución y Practicar

Configurar el oyente en web.xml

En este paso, aprenderá a configurar el MyListener en el archivo web.xml.

  1. Abra el archivo web.xml ubicado en el directorio ListenerProject/src/main/webapp/WEB-INF.

  2. Agregue la siguiente configuración al archivo 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">

    <!-- Defina su oyente -->
    <listener>
        <listener-class>org.labex.listener.MyListener</listener-class>
    </listener>

</web-app>

Esta configuración registrará la clase MyListener como un oyente en la aplicación web.

✨ Revisar Solución y Practicar

Iniciar el servidor Tomcat y probar la aplicación

  1. Abra una terminal y navegue hasta el directorio ListenerProject usando el siguiente comando:

    cd ~/project/ListenerProject/
  2. Inicie el servidor Tomcat usando el siguiente comando:

    mvn clean tomcat7:run
  3. Abra un navegador web y vaya a http://localhost:8080. Debería ver la página "Bienvenido a mi Sitio Web" con el conteo actual de visitantes mostrado.

  4. Actualice la página varias veces y debería ver el conteo de visitantes aumentar.

  5. Cierre el navegador y espere unos minutos. Actualice la página nuevamente y debería ver el conteo de visitantes disminuir.

¡Felicitaciones! Ha implementado con éxito la funcionalidad de seguimiento del acceso a la página web usando un oyente.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.