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对象销毁时执行该方法。

  • 相关阅读:
    领会一些比较巧妙的算法
    操作系统os常识
    C++中的继承与虚函数各种概念
    我学shell程序的记录
    matlab:linux环境中将m文件编译成动态链接库
    struct内存对齐:gcc与VC的差别
    fedora中丢失或损坏fstab,无法启动,如何补救
    判断一个字符串中的字符是否都在另一个中出现
    linux下的不错的小软件:apvlv,zathura和vifm
    C语言中将结构体写入文件
  • 原文地址:https://www.cnblogs.com/Zender/p/7811167.html
Copyright © 2011-2022 走看看