Servlet – Filtro – Part 1

Un filtro es un objeto que se utiliza en las etapas previa y posterior al procesamiento de una solicitud. Los filtros se utilizan principalmente para tareas de filtrado, como registro del lado del servidor, autenticación y autorización, validación de entrada, etc.

Servlet - Filter

El servlet es conectable, lo que significa que la entrada se especifica en el archivo web.xml. Si la entrada se elimina del archivo web.xml, el filtro se desactiva inmediatamente. Debe implementar javax.servlet para generar un filtro. Debido a que los servlets se construyen en el lenguaje Java altamente portátil y se adhieren a un marco común, son muy portátiles. Como resultado, permite la creación de extensiones de servidor avanzadas en servidores y sistemas operativos que son independientes entre sí.

Necesidades de los filtros de servlet:

  • Iniciar sesión en el servidor.
  • El parámetro de solicitud se registra en los archivos de registro.
  • Autenticación y autorización en el servidor.
  • Comprimir y Descomprimir
  • El cifrado y el descifrado son dos cosas diferentes.
  • Validación en el servidor.

Beneficios de los filtros de servlet:

  • Se puede enchufar.
  • El filtro no depende de un recurso de terceros.
  • Requiere poco mantenimiento.

Métodos de filtro de servlet:

La interfaz de filtro consta de 3 métodos de ciclo de vida.

Métodos

Descripción

public void init (configuración de FilterConfig) lanza ServletException Esto invoca el contenedor web para indicarle a un filtro que se está poniendo en servicio. Toma un parámetro, es decir, tipo FilterConfig u objeto FilterConfig.
public void doFilters (solicitud de ServletRequest, respuesta de ServletResponse, string de FileterChain) arroja ServletException, IOException Se llama a la función doFilter() cada vez que un usuario solicita un recurso que está asignado al filtro. Se utiliza con fines de filtrado.
destrucción de vacío público() Cuando el filtro se elimina del servicio, esta función solo se llama una vez.

Ejemplo

En este ejemplo, crearemos una página web index.html con un enlace que dice «haga clic aquí». Haga clic en el enlace para invocar el servlet » ServletFilter.java «. Pero antes de que se ejecute este servlet, se ejecutará el filtro » MyFilter.java » asociado con él, que se especifica en el descriptor de implementación.

índice.html

HTML

<html>
    <head>
        <title>HttpSession Event Listeners</title>
    </head>
    <body>
        <a href="ServletFilter">click here</a>
    </body>
</html>

ServletFilter.java

Java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class ServletFilter extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print(
            "<br>welcome to servlet filter example<br>");
    }
}

MiFiltro.java

Java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
public class MyFilter implements Filter {
    FilterConfig config;
    public void init(FilterConfig config)
        throws ServletException
    {
        this.config = config;
    }
    public void doFilter(ServletRequest req,
                         ServletResponse resp,
                         FilterChain chain)
        throws IOException, ServletException
    {
        PrintWriter out = resp.getWriter();
        String s = config.getInitParameter("construction");
        if (s.equals("yes")) {
            out.print("This page is under construction");
        }
        else {
            // sends request to next resource
            chain.doFilter(req, resp);
        }
    }
    public void destroy() {}
}

web.xml

XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
                     http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 id="WebApp_ID" version="4.0">
    <servlet>
        <servlet-name>ServletFilter</servlet-name>
        <servlet-class>ServletFilter</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletFilter</servlet-name>
        <url-pattern>/ServletFilter</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>f1</filter-name>
        <filter-class>MyFilter</filter-class>
        <init-param>
            <param-name>construction</param-name>
            <param-value>no</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>f1</filter-name>
        <url-pattern>/servlet1</url-pattern>
    </filter-mapping>
</web-app>

Producción:

Haga clic en «Haga clic aquí»

Después de hacer clic en el siguiente enlace obtendrá este mensaje

Publicación traducida automáticamente

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