Filtro de servlets de Java

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

  1. instanciar
  2. Inicializar.
  3. Filtrar.
  4. destruir.

Java Servlet Filter

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

  1. Autenticación.
  2. Filtros de registro y auditoría
  3. Filtros de conversión de imágenes.
  4. Filtros de compresión de datos.
  5. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *