English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Anotaciones Servlet

Hasta ahora, ya ha conocido cómo Servlet despliega aplicaciones en el servidor web utilizando el descriptor de despliegue (archivo web.xml).  API de Servlet 30.0 introdujo un paquete nuevo llamado javax.servlet.annotation. que proporciona tipos de anotaciones que se pueden usar para anotar clases Servlet. Si se utilizan anotaciones, no se necesita descriptor de despliegue (web.xml). Pero debe usar tomcat7o cualquier versión superior de tomcat.

Las anotaciones pueden reemplazar la configuración XML equivalente en el archivo de descripción de despliegue web (web.xml), como declaraciones de servlet y mapeos de servlet. El contenedor de servlet procesará las clases anotadas durante la despliegue.

Servlet 3El tipo de anotación introducido en la versión 0.0 es

Sr.No.Anotaciones y descripciones
1

@WebServlet

Declara servlet

2

@WebInitParam

Especifica los parámetros de inicialización

3

@WebFilter

Declara el filtro servlet

4

@WebListener

Declara WebListener

5

@HandlesTypes

Declara el tipo de clase que puede ser procesado por ServletContainerInitializer.

6

@HttpConstraint

Esta anotación se utiliza en la anotación ServletSecurity para representar las restricciones de seguridad que se aplican a todos los métodos del protocolo HTTP, para los cuales no hay un elemento HttpMethodConstraint correspondiente en la anotación ServletSecurity.

7

@HttpMethodConstraint

Esta anotación se utiliza en la anotación ServletSecurity para representar las restricciones de seguridad específicas de un mensaje de protocolo HTTP.

8

@MultipartConfig

Anotación que se puede especificar en la clase Servlet, que indica que la instancia del Servlet espera que se cumpla con la multiform./Solicitudes con tipo MIME de datos de formulario.

9

@ServletSecurity

Esta anotación se utiliza para la clase de implementación de Servlet para especificar las restricciones de seguridad que el contenedor de Servlet aplica a los mensajes del protocolo HTTP.

Aquí hemos discutido en detalle algunos anotaciones.

@WebServlet

@WebServlet se utiliza para declarar la configuración del Servlet con el contenedor. La siguiente tabla contiene una lista de propiedades utilizadas para la anotación WebServlet.

Sr.No.Atributos y descripción
1

String name

Nombre del Servlet

2

String[] value

Array de patrones de URL

3

String[] urlPatterns

Array de patrones de URL para este filtro de aplicación

4

Int loadOnStartup

El valor entero proporciona la sugerencia de orden de inicio

5

WebInitParam[] initParams

Parámetros de array de inicialización del Servlet

6

Boolean asyncSupported

Operaciones asincrónicas soportadas por el Servlet

7

String smallIcon

Pequeño icono del Servlet, si existe

8

String largeIcon

Gran icono del Servlet, si existe

9

String description

Descripción del Servlet, si existe

10

String displayName

Mostrar el nombre de este Servlet (si existe)

Debe declararse al menos un patrón de URL en la propiedad value o urlPattern de la anotación, pero no ambas propiedades al mismo tiempo.

Cuando el patrón de URL es el único atributo que se debe configurar, se recomienda utilizar la propiedad value, de lo contrario debe utilizarse la propiedad urlPattern.

ejemplo en línea

El siguiente ejemplo describe cómo utilizar la anotación @WebServlet. Es un servlet simple que muestra el texto Hello servlet.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet(value = "/Simple") 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
      lanza ServletException, IOException { 
   
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.print("</body></html>");         
   }   
}

Compile Simple.java de la manera habitual y coloque los archivos de clase en <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/en la carpeta classes.

Ahora intente ejecutar http://localhost:8080/Llame a cualquier servlet de manera simple. Verá la siguiente salida en la página web.

Hello servlet

@WebInitParam

@WebInitParam anotación se utiliza para especificar parámetros de inicialización para Servlet o filtro. Se utiliza en la anotación WebFilter o webevlet. La siguiente tabla contiene una lista de propiedades utilizadas para la anotación WebInitParam.

Sr.No.Atributos y descripción
1

String name

Nombre del parámetro de inicialización

2

String value

Valor del parámetro de inicialización

3

String description

Descripción del parámetro de inicialización

ejemplo en línea

@WebInitParam anotación se utiliza para especificar parámetros de inicialización para Servlet o filtro. Se utiliza en la anotación WebFilter o webevlet. La siguiente tabla contiene una lista de propiedades utilizadas para la anotación WebInitParam.

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;
@WebServlet(value = "/Simple, initParams = { 
   @WebInitParam(name = "foo", value = "Hello "), 
   @WebInitParam(name = "bar", value = " World!") 
}) 
public class Simple extends HttpServlet {
   private static final long serialVersionUID = 1L; 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      lanza ServletException, IOException {   
      
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.println(getInitParameter("foo")); 
      out.println(getInitParameter("bar")); 
      out.print("</body></html>");         
   }   
}

Compile Simple.java de la manera habitual y coloque los archivos de clase en <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/en la carpeta classes.

Ahora intente ejecutar http://localhost:8080/Llame a cualquier servlet de manera simple. Verá la siguiente salida en la página web.

¡Hola Servlet!
¡Hola Mundo!

@Webfilter

Esta es la anotación utilizada para declarar el filtro de servlet. Se procesa por el contenedor en tiempo de despliegue y aplica el filtro correspondiente a los patrones de URL, servlet y tipos de dispatcher especificados.

@WebFilter anotación define los filtros de la aplicación web. Esta anotación se especifica en la clase y contiene metadatos sobre el filtro declarado. El filtro anotado debe especificar al menos un patrón de URL. La tabla a continuación enumera las propiedades utilizadas para la anotación WebFilter.

Sr.No.Atributos y descripción
1

String filterName

nombre del filtro

2

String[] urlPatterns

Proporciona el valor del filtro de aplicación o el array de urlPatterns

3

DispatcherType[] dispatcherTypes

especificar el planificador (solicitud/tipo de respuesta)

4

String[] servletNames

arreglo que proporciona nombres de servlet

5

String displayName

nombre del filtro

6

String description

descripción del filtro

7

WebInitParam[] initParams

los parámetros de inicialización del filtro

8

Boolean asyncSupported

operaciones asincrónicas soportadas por el filtro

9

String smallIcon

gráfico pequeño del filtro (si existe)

10

String largeIcon

gráfico grande del filtro (si existe)

ejemplo en línea

el siguiente ejemplo describe cómo usar la anotación @WebFilter. Es un LogFilter simple que muestra Init param test param valor y la marca de tiempo actual. Esto significa que el funcionamiento del filtro es similar a una capa de interfaz entre solicitudes y respuestas. Aquí utilizamos "/*”representa urlPattern. Esto significa que, este filtro es aplicable a todos los servlet.

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  
//implementar la clase de filtro
@WebFilter(urlPatterns = {"/*}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // obtener parámetros de inicialización
      String testParam = config.getInitParameter("test-param");
            
      //imprimir parámetros de init
      System.out.println("Test Param: " + testParam);  
   } 
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //registre la marca de tiempo actual.
      System.out.println("Time ", + new Date().toString());  
         
      //Pase la solicitud de vuelta a la cadena de filtros
      chain.doFilter(request, response); 
   }
   public void destroy() {
      /* Llame antes de eliminar la instancia del filtro
      Servicios proporcionados por el contenedor web*/ 
   } 
}

Compile Simple.java de la manera habitual y coloque los archivos de clase en <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/en la carpeta classes.

Ahora intente ejecutar http://localhost:8080/Llame a cualquier servlet de manera simple. Verá la siguiente salida en la página web.

¡Hola Servlet!
  
¡Hola Mundo!

Ahora, abra la consola de servlet. Allí, encontrará los parámetros de inicialización de valor testparam y la marca de tiempo actual junto con los mensajes de notificación de servlet.