Los filtros son parte de la API de Servlet desde 2.3. Al igual que un servlet, el contenedor instancia y administra un objeto de filtro y sigue un ciclo de vida similar al de un servlet. Un Servlet tiene 4 etapas como se muestra a continuación
- instanciar
- Inicializar.
- Filtrar.
- destruir.
Estas etapas son similares a Instanciar, Inicializar, Filtrar, Destruir de un servlet. El filtro se utiliza para preprocesar la solicitud y posprocesar la respuesta. Un filtro es un objeto Java que realiza la tarea de filtrado en la solicitud a un recurso o en la respuesta de un recurso o en ambos.
Algunas de las aplicaciones que utilizan el filtro
- Autenticación.
- Filtros de registro y auditoría
- Filtros de conversión de imágenes.
- Filtros de compresión de datos.
- Filtros de cifrado y descifrado.
Las interfaces pertenecen a Filtros.
- Filtrar.
- FilterConfig.
- String de filtros.
Todas estas interfaces están disponibles en el paquete javax.Servlet
Filtrar
- Un filtro es una interfaz.
- Cada filtro debe ser heredado de esta interfaz.
- Proporciona métodos de ciclo de vida.
Métodos
Método | Acción realizada |
---|---|
init(FilterConfig filterconfig) | Llamado por el contenedor web para indicar a un filtro que se está poniendo en servicio |
doFilter (solicitud HttpServletRequest, respuesta HttpServletResponse, string FilterChain) | El contenedor lo llama cada vez que un par de solicitud/respuesta pasa a través de la string debido a una solicitud del cliente de un recurso al final de la string. |
destruir() | para indicar a un filtro que está fuera de servicio. |
Nota:
- La información del filtro debe proporcionarse dentro de web.xml .
- El filtro se asigna a uno o más de un servlet.
Archivo: web.xml
XML
<web-app > <servlet> <servlet-name>name</servlet-name> <servlet-class>Servlet class name</servlet-class> </servlet> <filter> <filter-name>name</filter-name> <filter-class>Filter class name</filter-class> </filter> <filter-mapping> <filter-name>name</filter-name> <url-pattern>/name</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>name</servlet-name> <url-pattern>/url</url-pattern> </servlet-mapping> </web-app>
string de filtros
FilterChain es una interfaz, que se implementa mediante un contenedor de servlet. Los filtros usan FilterChain para invocar el siguiente filtro en la string, o si el filtro que llama es el último filtro en la string para invocar el recurso al final de la string.
Método: doFilter()
Hace que se invoque el siguiente filtro de la string o, si el filtro que llama es el último filtro de la string, hace que se invoque el recurso al final de la string.
Tipo de devolución: Vacío
Parámetros:
- Solicitud HttpServletRequest
- Respuesta HttpServletResponse
Sintaxis:
void doFilter(HttpServletRequest request, HttpServletResponse response)
Podemos desarrollar tres tipos de filtros que se enumeran a continuación de la siguiente manera:
(1) Filtro de solicitud: contiene solo la lógica de procesamiento previa a la solicitud.
Ejemplo : filtro de recuento de requests, filtro de autenticación, filtro de autorización, filtro de validación, etc.
(2) Filtro de respuesta: contiene solo lógica de generación posterior a la respuesta.
Ejemplo: filtro de conversión, filtro de compresión, etc.
(3) Filtro de solicitud-respuesta: contiene la lógica de generación previa a la solicitud y posterior a la respuesta.
Ejemplo: filtro de prueba de rendimiento.
Implementación : ejemplo de filtro
A. Archivo:index.html
HTML
<html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <a href="servlet1">click here</a> <form> <body> <html>
B. Archivo: MyBlockFilter.java
Java
// Java Program to Illustrate MyBlockFilter // Importing required classes import java.io.IOException; import java.io.PrintWriter; // Importing all servlet classes import javax.servlet.*; // Class // Implementing Filter class public class MyBlockFilter implements Filter { // Method public void init(FilterConfig config) throws ServletException { } // Method public void doFilter(ServletRequest req, ServletResponse resp, FilterChain fc) throws IOException, ServletException { String ip = req.getRemoteAddr(); PrintWriter out = resp.getWriter(); if (ip.equals("127.0.0.1")) { out.print( ",<h2>Your ip address is blocked ny this websites</h2>"); } else { fc.doFilter(req, resp); } } // Method public void destroy() {} }
C. Archivo: HelloServlet
Java
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<h2>Hello Client welcome to my Website...</h2>"); } }
D. Archivo: web.xml
XML
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet1</url-pattern> </servlet-mapping> <filter> <filter-name>f1</filter-name> <filter-class>MyBlockFilter</filter-class> </filter> <filter-mapping> <filter-name>f1</filter-name> <url-pattern>/servlet1</url-pattern> </filter-mapping> </web-app>
Salida: si la dirección IP de nuestra PC es » 127.0.0.1″ , no podemos visitar el sitio web
Publicación traducida automáticamente
Artículo escrito por absolute99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA