Mejora del rendimiento del servlet para obtener registros de la base de datos

Aquí potenciaremos la capacidad de la aplicación web para recuperar registros de la base de datos. Para proporcionar esto, guardamos los datos de la tabla en una colección y reutilizamos esa colección en nuestro servlet. Como resultado, no estamos consultando repetidamente la base de datos. Estamos mejorando nuestro desempeño como resultado de esto. Para comenzar, primero debemos generar la siguiente tabla:

Mesa:

CREATE TABLE gfguser  
(    
    userid INT,  
    username VARCHAR(50),  
    userpass VARCHAR(50),  
    useremail VARCHAR(100),  
    usercountry VARCHAR(50),  
    contact INT,  
    PRIMARY KEY (USERID)  
)

Ahora, dentro de la tabla, agregue los siguientes registros.

Implementación: en este caso, hemos generado los siguientes seis recursos:

  1. índice.html
  2. Usuario.java
  3. MainListenerGfg.java
  4. Servlet1.java
  5. servlet2.java
  6. web.xml

Dos enlaces en el archivo index.html transmiten requests al servlet. User.java es una clase de bean sencilla con tres atributos y sus captadores y definidores asociados. La tabla de la base de datos está representada por esta clase. La clase de escucha es MainListenerGfg.java. El método contextInitialized de ServletContextListener se llama de forma predeterminada cuando se implementa el proyecto. Estamos recuperando los registros de la tabla y guardándolos en el objeto de la clase User, que se ha agregado al objeto de la clase ArrayList. Por último, el objeto de la clase ArrayList se utilizará para contener todos los registros de la tabla (colección).

Finalmente, guardamos el objeto ArrayList como un atributo en el objeto ServletContext para que podamos utilizarlo en el servlet. Servlet1.java recupera y genera información del objeto de contexto del servlet. Servlet2.java es idéntico a Servlet1.java. Este servlet imprime la información del objeto de contexto del servlet. Puede encontrar información sobre servlets y oyentes en web.xml.

A. index.html

Java

<html>
<body>
<h1> GeeksForGeeks</h1>
 <a href="servlet1">This is first servlet</a>|  //first link
 <a href="servlet2">This is second servlet</a>  //second link
</body>
</html>

B. Usuario.java

Java

// Java Program to Illustrate User Class
 
// Class
public class User {
   
    // Declaring variables to
    // access data from database
    private int id;
    private String name, password;
 
    // Adding getters and setter for variables
 
    // Getters and Setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getPassword() { return password; }
    public void setPassword(String password)
    {
        this.password = password;
    }
}

C. MainListenerGfg.java

Java

// Java Program to Illustrate MainListener Class
 
// Importing required classes
import java.sql.*;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
// Class
// implementing ServletContextListener interface
public class MainListenerGfg
    implements ServletContextListener {
 
    // Method 1
    public void contextInitialized(ServletContextEvent e)
    {
 
        // Creating an empty ArrayList
        ArrayList list = new ArrayList();
 
        // Try block to check for exceptions
        try {
 
            // Loading drivers by
            // connecting with database
            Class.forName("com.mysql.jdbc.Driver");
 
            Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/geeksforgeeks",
                "root", "root");
 
            PreparedStatement ps = con.prepareStatement(
                "select * from gfguser");
            ResultSet rs = ps.executeQuery();
 
            // Accessing all data until its empty
            // using next() method
            while (rs.next()) {
 
                User u = new User();
                u.setId(rs.getInt(1));
                u.setName(rs.getString(2));
                u.setPassword(rs.getString(3));
                list.add(u);
            }
 
            // Closing the connections
            // using close() method
            con.close();
        }
 
        // Catch block to handle exceptions
        catch (Exception ex) {
 
            // Displaying the exceptions
            System.out.print(ex);
        }
 
        // Storing the ArrayList object in ServletContext
        ServletContext context = e.getServletContext();
        context.setAttribute("data", list);
    }
 
    // Method 2
    public void contextDestroyed(ServletContextEvent arg0)
    {
        // Print statement whenever this method is called
        System.out.println("project undeployed...");
    }
}

D.Servlet1.java

Java

// Java Program to Illustrate Servlet Class
 
// Importing required classes
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
// Class
// Extending HttpServlet Class
public class Servlet1 extends HttpServlet {
 
    // Method
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
 
        long before = System.currentTimeMillis();
 
        ServletContext context = getServletContext();
        List list = (List)context.getAttribute("data");
 
        Iterator itr = list.iterator();
 
        // Condition holds true till there is single element
        // remaining in the List
        while (itr.hasNext()) {
            User u = (User)itr.next();
            out.print("<br>" + u.getId() + " " + u.getName()
                      + " " + u.getPassword());
        }
 
        // Closing the connections
        // using close() method
        out.close();
    }
}

E.Servlet2.java

Java

// Java Program to Illustrate Servlet Class
 
// Importing required classes
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
// Class
// Extending HttpServlet class
public class Servlet2 extends HttpServlet {
 
    // Method
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
 
        long before = System.currentTimeMillis();
 
        ServletContext context = getServletContext();
        List list = (List)context.getAttribute("data");
 
        // Iterator
        Iterator itr = list.iterator();
 
        // Condition holds true till
        // there is single element remaining
        while (itr.hasNext()) {
            User u = (User)itr.next();
            out.print("<br>" + u.getId() + " " + u.getName()
                      + " " + u.getPassword());
        }
 
        // Closing the connections
        // using close() method
        out.close();
    }
}

F.web.xml

XML

<web-app>
 <listener>
  <listener-class>MainListenerGfg</listener-class>
 </listener>
 
 <servlet>
  <servlet-name>Servlet1</servlet-name>
  <servlet-class>Servlet1</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>Servlet2</servlet-name>
  <servlet-class>Servlet2</servlet-class>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>Servlet1</servlet-name>
  <url-pattern>/servlet1</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>Servlet2</servlet-name>
  <url-pattern>/servlet2</url-pattern>
 </servlet-mapping>
</web-app>

Producción:

Para recibir el siguiente resultado, ejecute el archivo index.html:

Obtendremos el siguiente resultado si hace clic en el enlace «Este es el primer servlet»:

El siguiente resultado aparecerá cuando haga clic en el enlace «Este es el segundo servlet»:

Publicación traducida automáticamente

Artículo escrito por sanketnagare 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 *