English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 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.
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 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 |
@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!
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) |
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.