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:
- sessionCreated : Recibe la notificación de que se ha creado una sesión.
- 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