Registrando Acessos a Páginas Web Usando Listeners

JavaBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como implementar uma funcionalidade de rastreamento de acesso a páginas web usando um listener. O objetivo deste projeto é criar uma aplicação web que possa exibir o número de usuários acessando a página inicial no momento.

👀 Visualização

web page visitor count

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como implementar a classe MyListener.java para rastrear o número de acessos à página inicial.
  • Como implementar o arquivo index.jsp para exibir a contagem de visitantes atuais.
  • Como configurar o MyListener no arquivo web.xml.
  • Como iniciar o servidor Tomcat e testar a aplicação.

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Usar a interface HttpSessionListener para rastrear sessões de usuários.
  • Armazenar e recuperar a contagem de visitantes no ServletContext.
  • Exibir a contagem de visitantes em um arquivo JSP.
  • Configurar um listener no arquivo web.xml.
  • Iniciar e testar uma aplicação web usando Tomcat.

Implementar a Classe MyListener.java

Nesta etapa, você aprenderá como implementar a classe MyListener.java para rastrear o número de acessos à página inicial.

  1. Abra o arquivo MyListener.java localizado no diretório ListenerProject/src/main/java/org/labex/listener.

  2. Implemente a classe MyListener, que implementa a interface HttpSessionListener. Esta interface fornece dois métodos: sessionCreated() e sessionDestroyed().

  3. No método sessionCreated(), faça o seguinte:

    • Obtenha o ServletContext do objeto HttpSessionEvent.
    • Recupere o atributo "count" do ServletContext. Se o atributo for nulo, inicialize-o com 1. Caso contrário, incremente a contagem em 1.
    • Defina o atributo "count" atualizado de volta no ServletContext.
  4. No método sessionDestroyed(), faça o seguinte:

    • Obtenha o ServletContext do objeto HttpSessionEvent.
    • Recupere o atributo "count" do ServletContext. Se a contagem for maior que 0, decremente a contagem em 1.
    • Defina o atributo "count" atualizado de volta no ServletContext.

Sua classe MyListener.java deve ser semelhante a esta:

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);
    }
}
✨ Verificar Solução e Praticar

Implementar o Arquivo index.jsp

Nesta etapa, você aprenderá como implementar o arquivo index.jsp para exibir o número de acessos à página inicial.

  1. Abra o arquivo index.jsp localizado no diretório ListenerProject/src/main/webapp.

  2. No arquivo JSP, importe as classes necessárias:

    • javax.servlet.ServletContext
    • javax.servlet.http.HttpServletRequest
  3. Implemente um método chamado getVisitorsCount() que recebe um objeto HttpServletRequest como parâmetro. Neste método, faça o seguinte:

    • Obtenha o ServletContext do objeto HttpServletRequest.
    • Recupere o atributo "count" do ServletContext. Se o atributo for nulo, retorne 0. Caso contrário, retorne o valor da contagem.
  4. No arquivo JSP, exiba a contagem de visitantes atuais chamando o método getVisitorsCount() e incorporando o resultado no HTML.

Seu arquivo index.jsp deve ser semelhante a este:

<%@ 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>Welcome to My Website</h1>
    <p>Current Visitors: <%= getVisitorsCount(request) %></p>
  </body>
</html>
✨ Verificar Solução e Praticar

Configurar o Listener no web.xml

Nesta etapa, você aprenderá como configurar o MyListener no arquivo web.xml.

  1. Abra o arquivo web.xml localizado no diretório ListenerProject/src/main/webapp/WEB-INF.

  2. Adicione a seguinte configuração ao arquivo 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">

    <!-- Define your listener -->
    <listener>
        <listener-class>org.labex.listener.MyListener</listener-class>
    </listener>

</web-app>

Esta configuração registrará a classe MyListener como um listener na aplicação web.

✨ Verificar Solução e Praticar

Iniciar o Servidor Tomcat e Testar a Aplicação

  1. Abra um terminal e navegue até o diretório ListenerProject usando o seguinte comando:

    cd ~/project/ListenerProject/
  2. Inicie o servidor Tomcat usando o seguinte comando:

    mvn clean tomcat7:run
  3. Abra um navegador web e acesse http://localhost:8080. Você deverá ver a página "Welcome to My Website" com a contagem de visitantes atual exibida.

  4. Atualize a página algumas vezes e você deverá ver a contagem de visitantes aumentando.

  5. Feche o navegador e aguarde alguns minutos. Atualize a página novamente e você deverá ver a contagem de visitantes diminuindo.

Parabéns! Você implementou com sucesso a funcionalidade de rastreamento de acesso à página web usando um listener.

✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.