ServletConfig en Servlet

javax.servlet.ServletConfig es una interfaz como parte de la API de servlet. Para cada clase de Servlet en nuestra aplicación, el contenedor web creará un objeto ServletConfig y el contenedor web pasará este objeto como argumento al método public void init(ServletConfig config) de nuestro objeto de clase Servlet. Algunos de los puntos importantes en ServletConfig son:

  • ServletConfig es un objeto que contiene algunos parámetros iniciales o información de configuración creada por Servlet Container y pasada al servlet durante la inicialización.
  • ServletConfig es para un servlet en particular, lo que significa que uno debe almacenar información específica del servlet en web.xml y recuperarla usando este objeto.

Ejemplo

Supongamos que uno está creando un portal de empleo y desea compartir diferentes ID de correo electrónico (que pueden cambiar con el tiempo) con el reclutador y el solicitante de empleo. Entonces, decide escribir dos servlets, uno para manejar la solicitud del reclutador y otro para el solicitante de empleo.

¿Dónde almacenar ID de correo electrónico?

Ponga email-id como un par de nombre-valor para diferentes servlet dentro de web.xml que se puede recuperar usando getServletConfig().getInitParameter(“nombre”) en el servlet.

Métodos en la interfaz ServletConfig

Hay 4 métodos en la interfaz ServletConfig

  1. público abstracto java.lang.String getServletName()
  2. public abstract javax.servlet.ServletContext getServletContext()
  3. público abstracto java.lang.String getInitParameter(java.lang.String)
  4. public abstract java.util.Enumeration<java.lang.String> getInitParameterNames()

1. resumen público java.lang.String getServletName()

Mientras configuramos Servlet en web.xml, debemos dar un nombre lógico a nuestro servlet. Digamos que tenemos una clase Servlet TestServlet y queremos configurarlo en web.xml .

XML

<web-app>
    <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>TestServlet</servlet-class>
    </servlet>
  
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

En <servlet-name> le hemos dado un nombre lógico a nuestra clase TestServlet. Entonces, si usamos el método getServletName(), devolverá el nombre lógico del Servlet y, en este caso, devolverá «Prueba» .

2. resumen público javax.servlet.ServletContext getServletContext()

Este método simplemente devolverá el objeto ServletContext. El contenedor web crea un objeto ServletContext para cada aplicación web.

3. resumen público java.lang.String getInitParameter(java.lang.String)

Podemos almacenar parámetros de inicio como parte de web.xml

XML

<web-app>
   <servlet>
       <servlet-name>Test</servlet-name>
       <servlet-class>TestServlet</servlet-class>
       <init-param>
           <param-name>username</param-name>
           <param-value>xyz</param-value>
       </init-param>
 <init-param>
           <param-name>password</param-name>
           <param-value>welcome@123</param-value>
       </init-param>
   </servlet>
  
   <servlet-mapping>
       <servlet-name>Test</servlet-name>
       <url-apptern>/test</url-apptern>
   </servlet-mapping>
</web-app>

La ventaja de usar parámetros de inicio es que no necesitamos codificar valores en el código fuente y si no estamos codificando valores en el código fuente, para cambiar los valores no necesitamos tocar el código fuente. Solo necesitamos cambiar los valores en web.xml y volver a implementar la aplicación. Estos parámetros de inicio son específicos de un servlet para el que los ha configurado. Al usar getInitParameter() podemos acceder al valor de los parámetros de inicio en nuestro Servlet.

Java

import javax.servlet.Servlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletConfig;
  
public class TestServlet implements Servlet{
    private ServletConfig config;
     // web container will call this 
       // method by passing ServletConfig 
    public void init(ServletConfig config){
        this.config=config;
    }
  
    public void service(ServletRequest request, ServletResponse response){
        // pass <param-name> to get <param-value>
        String username=config.getInitParameter("username"); // xyz
        String password=config.getInitParameter("password"); // welcome@123
        System.out.println(username);
        System.out.println(password);
  
    }
  
    public void destroy(){
  
    }
  
    public ServletConfig getServletConfig(){
        return config;
    }
  
    public String getServletInfo(){
        return this.getClass().getName();
    }
  
}

4. public abstract java.util.Enumeration<java.lang.String> getInitParameterNames()

Este método devolverá la Enumeración con nombres de todos los nombres de parámetros de inicio.

Publicación traducida automáticamente

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