zoukankan      html  css  js  c++  java
  • Java Web学习总结(12)Filter过滤器

    一,Filter简介

    Filter也称之为过滤器,Filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理。

    二,Filter开发步骤

    1)编写一个过滤器的类实现Filter接口

    2)实现接口中尚未实现的方法(着重实现doFilter方法)

    3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)

    例如:

    FilterDemo.java

    import java.io.IOException;
     
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
     
    public class FilterDemo implements Filter{
     
        @Override
        public void destroy() {
            System.out.println("----过滤器销毁----");
        }
     
        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            System.out.println("----过滤器处理----");
            //放行
            arg2.doFilter(arg0, arg1);
        }
     
        @Override
        public void init(FilterConfig arg0) throws ServletException {
            System.out.println("----过滤器初始化----");
        }
    }

    Web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        id="WebApp_ID" version="3.0">
        <display-name>Filter</display-name>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
        
        <!--配置过滤器 -->
        <filter>
            <filter-name>FilterDemo</filter-name>
            <filter-class>com.zender.FilterDemo</filter-class>
        </filter>
     
        <!--映射过滤器 -->
        <filter-mapping>
            <filter-name>FilterDemo</filter-name>
            <!--“/*”表示拦截所有的请求 -->
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <dispatcher>REQUEST</dispatcher>
    </web-app

    三,Filter的生命周期

    Filter的创建和销毁由WEB服务器负责。 web应用程序启动时,web服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作,filter对象只会创建一次,init方法也只会执行一次。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。web服务器调用destroy方法销毁Filter。destroy方法在Filter的生命周期中仅执行一次。

    web服务器启动时:

    访问时:

    web服务器关闭时:

    Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法:

    init(Filter config)

    代表filter对象初始化方法 filter对象创建时执行。

    参数:

    config代表该Filter对象的配置信息的对象,内部封装是该filter的配置信息。

    doFilter(ServletRequest request, ServletResponse response,FilterChain chain)

    代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法。

    参数:

    ServletRequest/ServletResponse:

    每次在执行doFilter方法时web容器负责创建一个request和一个response对象作为doFilter的参数传递进来。该request个该response就是在访问目标资源的service方法时的request和response。

    FilterChain:

    过滤器链对象,通过该对象的doFilter方法可以放行该请求。

    destory()

    代表是filter销毁方法 当filter对象销毁时执行该方法。

  • 相关阅读:
    C#listbox使用方法
    poj 3894 System Engineer (二分图最大匹配--匈牙利算法)
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 连接字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 比较字符串
    Java实现 蓝桥杯VIP 算法训练 黑白无常
  • 原文地址:https://www.cnblogs.com/Zender/p/7811167.html
Copyright © 2011-2022 走看看