La clase ServletContextEvent proporciona alertas/notificaciones de cambios en el contexto del servlet de una aplicación web. ServletContextListener es una clase que recibe alertas/notificaciones sobre cambios en el contexto del servlet y actúa sobre ellos. Cuando el contexto se inicializa y elimina, el ServletContextListener se utiliza para realizar tareas cruciales. En pocas palabras, ServletContextEvent y ServletContextListener funcionan en tándem; cada vez que cambia el ServletContext, ServletContextEvent transmite un aviso, que es recibido por ServletContextListener, que luego realiza varias tareas basadas en el mensaje.
Constructor de la clase ServletContextEvent
ServletContextEvent(ServletContext e)
En la clase ServletContextEvent, solo hay un constructor. Después de la instanciación de ServletContext, el contenedor web produce una instancia de ServletContextEvent.
Métodos de ServletContextEvent
public ServletContext getServletContext()
Nota: Devuelve la instancia de ServletContext.
Métodos de la interfaz ServletContextListener
Método |
Acción realizada |
---|---|
contexto vacío Inicializado (ServletContextEvent e) | Cuando la aplicación se inicializa por primera vez, se llama a este método. |
contexto vacío destruido (ServletContextEvent e) | Cuando se destruye la aplicación, se llama a este método. |
Ejemplo: ServletContextEvent y ServletContextListener
En este ejemplo, tendremos que crear una tabla llamada contador con una columna llamada página vista para guardar el número de páginas vistas. al utilizar este registro de la base de datos, averiguaremos el número total de visitas a la página.
A. Archivo: index.html
HTML
<a href="CounterGfg">Total Page views GeeksforGeeks</a>
B. Archivo: web.xml
XML
<web-app> <listener> <listener-class>MyListenerGfg</listener-class> </listener> <servlet> <servlet-name>CounterGfg</servlet-name> <servlet-class>CounterGfg</servlet-class> </servlet> <servlet-mapping> <servlet-name>CounterGfg</servlet-name> <url-pattern>/CounterGfg</url-pattern> </servlet-mapping> </web-app>
C. Archivo: MyListenerGfg.java
Java
// Java Program to Illustrate MyListener Class // Importing required classes import java.sql.*; import javax.servlet.*; // Class public class MyListenerGfg implements ServletContextListener { // Class data members ServletContext ctx; Connection con; Statement s; PreparedStatement ps; ResultSet rs; int count; // Method 1 public void contextInitialized(ServletContextEvent sce) { // Try block to check for exceptions try { // Loading drivers using forName() method Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/geeksforgeeks", "root", "root"); s = con.createStatement(); // Fetching pageviews value from table counter rs = s.executeQuery("select pageview from counter"); // Iterating using next() method while (rs.next()) { count = rs.getInt(1); } ctx = sce.getServletContext(); ctx.setAttribute("pcount", count); } // Catch block to handle exceptions catch (Exception e) { // Display exception with line number // using printStackTrace() method e.printStackTrace(); } } // Method 2 public void contextDestroyed(ServletContextEvent sce) { try { ctx = sce.getServletContext(); count = (Integer)ctx.getAttribute("pcount"); ps = con.prepareStatement("update counter set pcount='" + count + "'"); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } }
D. Archivo: CounterGfg.java
Java
// Java Program to Illustrate Counter Class // Importing required classes import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // Class // Extending HttpServlet class public class CounterGfg extends HttpServlet { // Method protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); ServletContext ctx = getServletContext(); Integer count = (Integer)ctx.getAttribute("pcount"); out.println(count + ": pageview"); ctx.setAttribute("pcount", ++count); } }
Ahora, ejecute el archivo ‘index.html’ en el servidor y esto mostrará el siguiente resultado
Producción:
Después de hacer clic en ese enlace, se cargará la siguiente página que muestra el recuento de visitas a la página, es decir, cuántas veces visitó la página el usuario. El recuento de páginas aumentará cada vez que actualice o vuelva a visitar la página.
Publicación traducida automáticamente
Artículo escrito por sanketnagare y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA