Servlet: HttpSessionEvent y HttpSessionListener

En Java, HttpSessionEvent es una clase que representa notificaciones de eventos para cambios o actualizaciones de sesiones dentro de una aplicación web. De manera similar, la interfaz para este evento es HttpSessionListener , que es para recibir eventos de notificación sobre cambios en el ciclo de vida de HttpSession. Como medio para aceptar estos eventos de notificación, la implementación de la clase debe seguir uno de los siguientes:

  • Debe declararse en el descriptor de implementación de la aplicación web, anotado con WebListener
  • Debe registrarse a través de uno de los métodos addListener definidos en ServletContext

Hay dos métodos de la interfaz HttpSessionListner: 

  1. sessionCreated : Recibe la notificación de que se ha creado una sesión.
  2. sessionDestroyed : Recibe la notificación de que una sesión está casi invalidada.

// Parámetro: se – el HttpSessionEvent que contiene la sesión

sesión vacía creada (HttpSessionEvent se) 

// Parámetro: se – el HttpSessionEvent que contiene la sesión

sesión vacía destruida (ServletContextEvent se) 

Ejemplo

Cuente el total y las sesiones activas, utilizando HttpSessionEvent y HttpSessionListener. Ahora, tenemos que crear estos archivos:

  • índice.html
  • CountUserListner.java
  • LoginServlet.java
  • Cerrar sesiónServlet.java

index.html: Credenciales de inicio de sesión

HTML

<!DOCTYPE html>
<html>
  <body>
    <h2>Login Credentials</h2>
  
    <form action="servlet">  
  
      Username:<input type="text" name="username"><br>  
      Password:<input type="password" name="userpass"><br>  
  
      <input type="Submit" value="Sign-in"/>  
    </form>  
  
  </body>
</html>

CountUserListner.java: esta clase de escucha cuenta las sesiones totales y activas y almacena esta información como un atributo en el objeto ServletContext.

Java

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
  
public class CountUserListener implements HttpSessionListener{
    ServletContext scx =null;
    static int all =0, active =0;
  
    // It receives the notification that
    // a session has been created.
    public void sessionCreated(HttpSessionEvent se) 
    {
        all++;
        active++;
  
        scx =se.getSession().getServletContext();
        scx.setAttribute("All Users", all);
        scx.setAttribute("Active Users", active);
  
    }
  
      // It receives the notification that 
      // a session is almost invalidated
    public void sessionDestroyed(HttpSessionEvent se) 
    {
        active--;
        scx.setAttribute("Active Users", active);
    }
  
}

LoginServlet.java: esta clase de servlet crea una sesión e imprime el total y los usuarios activos actuales.

Java

import java.io.IOException;
import java.io.PrintWriter;
    
import javax.servlet.ServletContext;
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
  
public class LoginServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
            throws ServletException, IOException {
  
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
  
        String str = request.getParameter("Username");
        out.print("Welcome "+str);
  
        HttpSession session = request.getSession();
        session.setAttribute("Uname",str);
  
        // this retrieve data from ServletContext object
        ServletContext scx = getServletContext();
        int au = (Integer)scx.getAttribute("All Users");
        int acu = (Integer)scx.getAttribute("Active Users");
        out.print("<br>All Users = "+au);
        out.print("<br>Active Users = "+acu);
  
        out.print("<br><a href='logout'>Logout</a>");
  
        out.close();
    }
  
}

LogoutServlet.java: esta clase de Servlet invalida la sesión.

Java

import java.io.IOException;
import java.io.PrintWriter;
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;
  
public class LogoutServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
            throws ServletException, IOException {
  
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
  
        HttpSession session=request.getSession(false);
        
        // This invalidates the session
        session.invalidate();
  
        out.print("You are successfully logged out");
        out.close();
    }
  
}

Publicación traducida automáticamente

Artículo escrito por kumarsaurabhsingh05 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *