过滤器 订阅
过滤器(filter)是输送介质管道上不可缺少的一种装置,通常安装在减压阀、泄压阀、定水位阀 ,方工过滤器其它设备的进口端设备。过滤器由筒体、不锈钢滤网、排污部分、传动装置及电气控制部分组成。待处理的水经过过滤器滤网的滤筒后,其杂质被阻挡,当需要清洗时,只要将可拆卸的滤筒取出,处理后重新装入即可,因此,使用维护极为方便。 展开全文
过滤器(filter)是输送介质管道上不可缺少的一种装置,通常安装在减压阀、泄压阀、定水位阀 ,方工过滤器其它设备的进口端设备。过滤器由筒体、不锈钢滤网、排污部分、传动装置及电气控制部分组成。待处理的水经过过滤器滤网的滤筒后,其杂质被阻挡,当需要清洗时,只要将可拆卸的滤筒取出,处理后重新装入即可,因此,使用维护极为方便。
信息
起源时间
20世纪初
作    用
过滤杂质等
分    类
重力、真空和加压等
中文名
过滤器
外文名
filter
类    型
纤维、Y型、盘式等
过滤器发展历史
中国古代即已应用过滤技术于生产,公元前200年已有植物纤维制作的纸。公元105年蔡伦改进了造纸法。他在造纸过程中将植物纤维纸浆荡于致密的细竹帘上。水经竹帘缝隙滤过,一薄层湿纸浆留于竹帘面上,干后即成纸张。最早的过滤大多为重力过滤,后来采用加压过滤提高了过滤速度,进而又出现了真空过滤。20世纪初发明的转鼓真空过滤器实现了过滤操作的连续化。此后,各种类型的连续过滤器相继出现。间歇操作的过滤器(例如板框压滤器等)因能实现自动化操作而得到发展,过滤面积越来越大。为得到含湿量低的滤渣,机械压榨的过滤器得到了发展。
收起全文
精华内容
参与话题
问答
  • 什么是过滤器

    千次阅读 2019-10-31 20:46:07
    什么是过滤器? 1.概念: 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的...

    什么是过滤器?

    1.概念:
    过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:
    ①以常规的方式调用资源(即,调用servlet或JSP页面)。
    ②利用修改过的请求信息调用资源。
    ③调用资源,但在发送响应到客户机前对其进行修改。
    ④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。
    2.过滤器的工作原理
    在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。
    3.过滤器的生命周期
    public void init(FilterConfig filterConfig) throws ServletException;//初始化
    和我们编写的Servlet程序一样,Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//拦截请求
    这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。

    public void destroy();//销毁
    Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁。在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。

    展开全文
  • 过滤器Fliter

    2018-10-19 08:48:22
    例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能 2.它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理 3.在一个web应用中,可以开发编写多...

    一、基本概念

    1.Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能
    2.它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理
    3.在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链
    4.web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源

    在这里插入图片描述

    5. 在doFilter()方法中,chain.doFilter()前的一般是对request执行的过滤操作,chain.doFilter后面的代码一般是对response执行的操作
    6. 在WEB开发中常见的应用的地方:
    1)对用户请求进行统一认证,权限管理
    
    2)对用户的访问请求进行记录和审核
    
    3)对用户发送的数据进行过滤和替换
    
    4)转换图像格式
    
    5)对响应的内容进行压缩,减少传输量
    
    6)对请求和相应进行加密处理
    

    二、Filter开发

    1.使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
    2.Filter功能
    1)在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。
    
    2)在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
    
    3.Filter开发分为二个步骤:
    1)编写java类实现Filter接口,并实现其doFilter方法
    
    2)在 web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源
    

    三、Filter生命周期

    1.Filter创建

    (1)public void init(FilterConfig filterConfig) throws ServletException;      // 初始化
    
    (2)Filter的创建和销毁由WEB服务器负责
    
    (3)web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作
    
    (4)filter对象只会创建一次,init方法也只会执行一次
    
    (5)通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象
    

    2.Filter的doFilter()方法

    (1)public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;  //  拦截请求
    
    (2)这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。
    
    (3)FilterChain参数用于访问后续过滤器
    

    3.Filter的销毁

    (1)public void destroy();  //  销毁
    
    (2)Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁
    
    (3)在Web容器卸载 Filter 对象之前被调用
    
    (4)该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源
    

    四、FilterConfig对象

    1. String getFilterName()         		 // 得到filter的名称
    
    2. String getInitParameter(String name)  // 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null
    
    3. Enumeration getInitParameterNames();  // 返回过滤器的所有初始化参数的名字的枚举集合
    
    4. ServletContext getServletContext()    // 返回Servlet上下文对象的引用
    

    五、Filter常用配置

    <filter>
    
    	<description>FilterDemo02过滤器</description>
        <filter-name>FilterDemo02</filter-name>
        <filter-class>me.gacl.web.filter.FilterDemo02</filter-class>
    
        <!--配置FilterDemo02过滤器的初始化参数-->
        <init-param>
        	<description>配置FilterDemo02过滤器的初始化参数</description>
         	<param-name>name</param-name>
         	<param-value>gacl</param-value>
        </init-param>
        <init-param>
    		<description>配置FilterDemo02过滤器的初始化参数</description>
            <param-name>like</param-name>
            <param-value>java</param-value>
        </init-param>
    
        <!--映射过滤器-->
        <filter-mapping>
       		<filter-name>FilterDemo02</filter-name>
          	<!--“/*”表示拦截所有的请求 -->
           	<url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </filter>   
    

    参考网址

    javaweb学习总结(四十二)——Filter(过滤器)学习

    注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
    ps : 有错误的还望各位大佬指正,小弟不胜感激

    展开全文
  • Java Web之过滤器(Filter)

    万次阅读 多人点赞 2018-07-31 16:58:40
    过滤器(Filter) 过滤器实际上就是对web资源进行拦截,做一些处理后再交给servlet。 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 大概流程图如下 应用场景 自动登录 统一设置...

    过滤器(Filter)


    过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
    通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

    大概流程图如下

    这里写图片描述

    应用场景
    自动登录
    统一设置编码格式
    访问权限控制
    敏感字符过滤等


    创建Filter

    在Servlet中我们一般都会对request和response中的字符集编码进行配置,如果Servlet过多字符集编码发生变化时修改起码会很麻烦,这些通用的字符集编码配置等工作我们可以放到Filter中来实现。
    下面我们来创建一个处理字符集编码的Filter。

    右键包名—>new ---->Filter

    这里写图片描述

    输入过滤器名称,跟创建Servlet一样,这里我们直接使用 @WebFilter 注解,不再去web,xml中进行配置了。

    这里写图片描述

    创建完成后默认代码,可以看到,CharsetFilter实现了Filter接口,实现了3个方法。3个方法的作用已经在注释中写清楚了。

    package filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    @WebFilter(filterName = "CharsetFilter")
    public class CharsetFilter implements Filter {
        public void destroy() {
            /*销毁时调用*/
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            /*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
           
            chain.doFilter(req, resp);//交给下一个过滤器或servlet处理
        }
    
        public void init(FilterConfig config) throws ServletException {
    
            /*初始化方法  接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
    
        }
    
    }
    
    

    配置Filter

    可配置的属性有这些

    这里写图片描述

    常用配置项
    urlPatterns
    配置要拦截的资源

    1. 以指定资源匹配。例如"/index.jsp"
    2. 以目录匹配。例如"/servlet/*"
    3. 以后缀名匹配,例如"*.jsp"
    4. 通配符,拦截所有web资源。"/*"

    **initParams **
    配置初始化参数,跟Servlet配置一样

    例如

    initParams = {
            @WebInitParam(name = "key",value = "value")
    }
    

    dispatcherTypes **
    配置拦截的类型,可配置多个。默认为
    DispatcherType.REQUEST**
    例如

    dispatcherTypes = {DispatcherType.ASYNC,DispatcherType.ERROR}
    

    其中DispatcherType是个枚举类型,有下面几个值

    	FORWARD,//转发的
        INCLUDE,//包含在页面的
        REQUEST,//请求的
        ASYNC,//异步的
        ERROR;//出错的
    

    下面我们来对CharsetFilter 代码进行一下修改

    package filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    import java.io.IOException;
    
    @WebFilter(filterName = "CharsetFilter",
            urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
            initParams = {
                    @WebInitParam(name = "charset", value = "utf-8")/*这里可以放一些初始化的参数*/
            })
    public class CharsetFilter implements Filter {
        private String filterName;
        private String charset;
    
        public void destroy() {
            /*销毁时调用*/
    
            System.out.println(filterName + "销毁");
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            /*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
    		System.out.println(filterName + "doFilter()");
            req.setCharacterEncoding(charset);
            resp.setCharacterEncoding(charset);
            chain.doFilter(req, resp);
        }
    
        public void init(FilterConfig config) throws ServletException {
    
            /*初始化方法  接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
    
            filterName = config.getFilterName();
            charset = config.getInitParameter("charset");
    
            System.out.println("过滤器名称:" + filterName);
            System.out.println("字符集编码:" + charset);
    
        }
    
    }
    
    

    这样一个简单的字符集编码处理的过滤器就完成了
    我们看看执行打印的结果
    这里写图片描述

    需要注意的是
    过滤器是在服务器启动时就会创建的,只会创建一个实例,常驻内存,也就是说服务器一启动就会执行Filter的init(FilterConfig config)方法.
    当Filter被移除或服务器正常关闭时,会执行destroy方法


    多个Filter的执行顺序

    在我们的请求到达Servle之间是可以经过多个Filter的,一般来说,建议Filter之间不要有关联,各自处理各自的逻辑即可。这样,我们也无需关心执行顺序问题。
    如果一定要确保执行顺序,就要对配置进行修改了,执行顺序如下

    1. 在web.xml中,filter执行顺序跟<filter-mapping>的顺序有关,先声明的先执行
    2. 使用注解配置的话,filter的执行顺序跟名称的字母顺序有关,例如AFilter会比BFilter先执行
    3. 如果既有在web.xml中声明的Filter,也有通过注解配置的Filter,那么会优先执行web.xml中配置的Filter

    我们写个小例子看一下

    新建3个Filter,加上之前的CharsetFilter一共四个

    这里写图片描述

    其中CharsetFilterABFilter是通过注解声明的

    CharsetFilter注解配置

    
    @WebFilter(filterName = "CharsetFilter",
            urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
            initParams = {
                    @WebInitParam(name = "charset", value = "utf-8")/*这里可以放一些初始化的参数*/
            })
    

    ABFilter

    @WebFilter(filterName = "ABFilter",urlPatterns = "/*")
    

    AFilterBFilter是在web.xml配置的。
    执行顺序跟<filter>的顺序无关
    <filter-mapping>的顺序才决定执行顺序

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <filter>
            <filter-name>AFilter</filter-name>
            <filter-class>filter.AFilter</filter-class>
        </filter>
        <filter>
            <filter-name>BFilter</filter-name>
            <filter-class>filter.BFilter</filter-class>
        </filter>
    
        <!--这里BFilter在AFilter之前-->
        <filter-mapping>
            <filter-name>BFilter</filter-name>
            <url-pattern>/filter.jsp</url-pattern>
        </filter-mapping>
    
        <filter-mapping>
            <filter-name>AFilter</filter-name>
            <url-pattern>/filter.jsp</url-pattern>
        </filter-mapping>
    
       
    </web-app>
    

    每个Filter添加了打印语句,如下
    以ABFilter为例

    package filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    @WebFilter(filterName = "ABFilter",urlPatterns = "/*")
    public class ABFilter implements Filter {
        private String filterName;
    
        public void destroy() {
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            System.out.println(filterName + "  doFilter()");
            chain.doFilter(req, resp);
        }
    
        public void init(FilterConfig config) throws ServletException {
            filterName= config.getFilterName();
            System.out.println("过滤器名称:" + filterName +" init");
        }
    
    }
    
    

    下面我们来访问filter.jsp看看打印结果

    这里写图片描述

    可以看到,执行结果符合预期。
    BFilter和AFilter是在web.xml中声明的,且BFilter的<filter-mapping>在前,故BFilter在AFilter之前执行。
    ABFilter和CharsetFilter是通过注解声明的,故他俩在BFilter和AFilter之后执行,但是ABFilter的名称以A开头,故在CharsetFilter之前执行

    这里写图片描述


    访问权限控制小例子##

    下面我们写一个访问控制权限控制的小例子。
    我们在浏览一些网站经常有这个情况,没有登录时是不允许我们访其主页的,只有登录过后才能访问。
    下面我们就用Filter简单实现一下。

    需求分析

    1. 登录时将登录的账号密码保存到cookie中,下次访问时携带账号和密码,过滤器中进行校验
    2. 用户没有登录直接访问主页时,要跳转到登录页面
    3. 登录过滤器不对登录页面进行过滤

    我们先来看一下项目结构

    这里写图片描述

    这里主要看一下LoginFilter的代码

    我们在LoginFilter中对非登录页面的其他jsp都会进行过滤,判断cookie中是否携带了account和pwd。
    如果有这两个数据表示之前登录过,那么对数据进行校验,正确的话就进行下一个操作。
    否则的话,跳转到登录界面

    package filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebFilter(filterName = "LoginFilter", urlPatterns = "*.jsp", dispatcherTypes = {})
    public class LoginFilter implements Filter {
        public void destroy() {
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
    
            System.out.println("LoginFilter doFilter");
    
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) resp;
    
            String url = request.getRequestURI();
    
            System.out.println("请求的url:" + url);
            /*登录页面不需要过滤*/
    
            int idx = url.lastIndexOf("/");
            String endWith = url.substring(idx + 1);
    
    
            if (!endWith.equals("login.jsp")) {
                /*不是登录页面  进行拦截处理*/
    
                System.out.println("不是登录页面,进行拦截处理");
    
                if (!isLogin(request)) {
                    System.out.println("没有登录过或者账号密码错误,跳转到登录界面");
                    response.sendRedirect("login.jsp");
                } else {
                    System.out.println("已经登录,进行下一步");
                    chain.doFilter(req, resp);
                }
    
            } else {
    
                System.out.println("是登录页面,不进行拦截处理");
                chain.doFilter(req, resp);
            }
    
    
        }
    
    
        private boolean isLogin(HttpServletRequest request) {
    
            Cookie[] cookies = request.getCookies();
    
            String account = "";
            String pwd = "";
    
            if (cookies != null && cookies.length > 0) {
                for (Cookie cookie : cookies) {
                    if (cookie.getName().equals("account")) {
                        account = cookie.getValue();
                    } else if (cookie.getName().equals("pwd")) {
                        pwd = cookie.getValue();
                    }
                }
            }
    
            if (account.equals("") || pwd.equals("")) {
                return false;
    
            } else if (account.equals("yzq") && pwd.equals("123")) {
                return true;
            }
    
    
            return false;
        }
    
        public void init(FilterConfig config) throws ServletException {
            System.out.println("LoginFilter  init");
        }
    
    }
    
    

    执行效果

    这里写图片描述

    可以看到,我们在没有登录的情况下直接去访问index.jsp页面时会自动跳转到登录页面,在登录成功后,再次直接访问index页面则可以访问。

    下面是demo

    访问控制demo


    如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

    展开全文
  • java 过滤器、监听器、拦截器的区别

    万次阅读 2019-04-09 17:57:58
    先说最易混淆的过滤器和拦截器的区别: ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。  ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。  ③拦截器只能对action请求起作用,而过滤器则...

    先说最易混淆的过滤器和拦截器的区别:

        ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
      ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
      ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
      ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
      ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
        ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

     过滤器、监听器、拦截器概念

    概念
    
      1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,
    
    可以动态生成web页面它工作在客户端请求与服务器响应的中间层;
    
      2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求,响应和头信息。
    
    它不能产生一个请求或者响应,它只是修改对某一资源的请求或者响应;
    
      3.listener:监听器,通过listener可以坚挺web服务器中某一执行动作,并根据其要求作出相应的响应。
    
    就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件;
    
      4.interceptor:拦截器是对过滤器更加细化的应用,他不仅可以应用在service方法前后还可以应用到其他方法的前后
    
    拦截器;
    
      5.servlet,filter,listener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到struts。xml中。
    
    spring的拦截器配置到spring.xml中;

     过滤器、监听器、拦截器的生命周期

    1.servlet
    
      servle的生命周期开始于被装入web服务器的内存中,并在web服务终止或者重新装入servlet的时候结束;
    
    servlet一旦被装入web服务器,一般不会从web服务器内存中删除;直到web服务器关闭;
    
      装入:启动服务器时加载servlet的实例;
    
      初始化:web服务器接收到请求时,或者两者之间的某个时刻启动,调用init()
    
      调用:从第一次到以后的多次访问,都只调用doGet()或dopost)()方法;
    
      销毁;停止服务器时调用destroy()方法,销毁实例;
    
      2.filter
    
      需要实现javax.servlet包的Filter接口的三个方法init(),doFilter(),destroy();
    
      加载:启动服务器时加载过滤器的实例,并调用init()方法;
    
      调用:每次请求的时候只调用方法doFilter()进行处理;
    
      销毁:服务器关闭前调用destroy()方法,销毁实例;
    
      3.listener
    
      web.xml的加载顺序是:context-param->listener->filter->servlet
    
      4.interceptor
    
      加载配置文件后初始化拦截器,当有对action的请求的时候,调用interceptor方法,最后也是根据服务器停止进行销毁;

      过滤器、监听器、拦截器的职责

    1.servlet
    
      创建并返回一个包含基于客户请求性质的动态内容的完整的html页面
    
      创建可嵌入到现有的html页面中的一部分html页面(html片段)
    
      读取客户端发来的隐藏数据
    
      读取客户端发来的显示数据
    
      与其他服务器资源(包括数据库和java的应用程序)进行通信
    
      2.filter
    
      filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:
    
      在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;
    
      在servlet被调用之后截获servlet的执行
    
      3.listener
    
      servlet2.4规范提供了8个listener接口,可以将其分为三类,分别如下;
    
      第一类:与HttpContext有关的listener接口,包括:ServletContextListener、ServletContextAttributeListener
    
      第二类:与HttpSession有关的listner接口。包括:HttpSessionListener、HttpSessionAttributeListener、
    
    HttpSessionBindingListener、 HttpSessionActivationListener、
    
      第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListener、ServletRequestAttributeListener
    
         4.interceptor
    
      与过滤器类似,通过层层拦截,处理用户的请求和响应;

      过滤器、监听器、拦截器的图解

    1.servlet:

      

      2.filter

      

      

      3.listener

      

      4.interceptor

      

    展开全文
  • SpringMVC——过滤器

    万次阅读 多人点赞 2018-02-23 20:38:51
    SpringMVC——过滤器实现和理解 一、先提出几个问题 ?过滤器是什么? ?过滤器是如何实现的? ?过滤器和拦截器的区别? ?过滤器的核心原理是什么(阅读源码)? 之前我学东西总是不够深入,现在决定换个...
  • 过滤器

    2017-01-07 18:23:13
    过滤器介绍
  • 过滤器

    2019-11-12 15:40:15
    package com.bjsxt.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig;...import javax.servlet.ServletException;...import...
  • 过滤器

    2020-06-27 11:21:08
    在上面那个文件搜索的练习中,我们可以使用过滤器采实现 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器 File[] listFiles(FileFilter filter) java. io. FileFilter接口:用于抽象路径名(File...
  • 过滤器

    2014-10-26 00:41:00
    Filter过滤器学习笔记 知识概要: 一:什么是过滤器 二:过滤器的工作原理 三:过滤器的执行过程和生命周期 四:过滤器的编写步骤 五:过滤器的四个简单的案例 一:什么是过滤器呢 Web过滤器是向Web...
  • 过滤器

    2020-11-08 11:00:01
    1.过滤器概念 现有问题 在以往的Servlet中,有没有冗余的代码,多个Servlet都要进行编写 概念 过滤器(Filter)是处于客户端与服务端目标资源之间的一道过滤技术 执行流程 Client 过滤器 目标资源 ...
  • 过滤器

    2020-11-07 20:41:05
    * web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 * 过滤器的作用: * 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤... 2. 快速入门: 1. 步骤...
  • Redis-布隆过滤器

    2020-10-14 17:19:55
    1. 布隆过滤器(Bloom Filter)原理以及应用 假设现在有50亿个电话号码,现在有1万个电话号码,需要快速判断这些电话号码是否已经存在? 现在有3中途径 通过数据库查询,但是不能快速查询。 把电话号码预先放在一个...
  • 过滤器

    2020-11-17 16:35:49
    1.什么是过滤器? 过滤器和函数和计算属性一样都是用来处理数据的 但是过滤器一般用于格式化插入的文本数据 2.如何自定义全局过滤器 Vue.filter("过滤器名称",过滤器处理函数): 3.如何使用全局过滤器 {{msg|...
  • WebSecurity的performBuild()方法,会构造一个FilterChainProxy实例。参数类型为List<SecurityFilterChain>。 FilterChainProxy filterChainProxy = new FilterChainProxy(securityFilterChains);...
  • 一、引言 本来想记录一下关于用户登陆和登陆之后的权限管理、...关于Interceptor解决权限和菜单管理的问题,在放在下一篇写吧,就酱紫。...1、过滤器(Filter) 首先说一下Filter的使用地方,我们在配置web.x...
  • <!... <... <...自定义过滤器</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> /** * 自定义全局过滤器 */ Vue.fil
  • #region 添加全局异常过滤器和参数校验过滤器 services.AddControllers(options => { options.Filters.Add<ValidFilterAttribute>(); options.Filters.Add<GlobalExceptionFilter>(); }); #...
  • 在.Net Core的时代中,框架会帮你自动验证model的state,也就是ModelState。... 基于现有框架的代码编写的话,所以我们不再需要在业务中耦合这样的模型判断代码,系统内部会检查ModelState是否为Valid,如果为InValid会...
  • 文章目录布隆过滤器 - Redis 布隆过滤器,Guava 布隆过滤器 BloomFilter1、布隆过滤器的起源,用途2、布隆过滤器的概念3、布隆过滤器的优缺点1、优点2、缺点4、应用场景5、布隆过滤器的工作原理6、布隆过滤器的设计 ...
  • wireshark显示过滤器和捕获过滤器

    万次阅读 2018-11-14 20:52:57
    关于wireshark 过滤器的使用,包括wireshark显示过滤器和wireshark捕获过滤器

空空如也

1 2 3 4 5 ... 20
收藏数 713,759
精华内容 285,503
关键字:

过滤器