过滤器Filter

  • 过滤器如何实现拦截?
  • Filter接口
  • Filter生命周期
    • 1、Filter接口中三个重要的方法
    • 2、Filter的生命周期
  • Filter对象 - FilterConfig
  • 过滤器链 - FilterChain

Filter,过滤器,即是对数据等的过滤,不仅能预处理数据,只要是发送过来的请求他都是可以预处理的,同时还可以对服务器返回的响应预处理,大大减轻了服务器的压力
例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Filter其实是客户端和servlet中间的一个传递,并且他可以对要传递的东西进行修改。
Filter的生命周期和Servlet的生命周期是一样的,他们都提供了init(FilterConfig arg)和destory()方法来控制。

注意:
过滤器是用来拦截请求和响应的,不能产生响应,而servlet是用来处理请求并产生响应的。

过滤器如何实现拦截?

1、当客户端发生请求后,在HttpServletRequest到达Servlet之前,过滤器拦截客户的HttpServletRequest
2、根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据
3、在过滤器中调用doFilter方法,对请求放行。请求到达Servlet后,对请求进行处理并产生HttpServletResponse发送给客户端
4、在HttpServletResponse到达客户端之前,过滤器拦截HttpServletResponse
5、根据需要检查HttpServletResponse,可以修改HttpServletResponse头和数据
6、最后,HttpServletResponse到达客户端

Filter接口

ServletAPI提供了一个Filter接口,编写的过滤器必须实现该接口

Filter生命周期

1、Filter接口中三个重要的方法

  • init()方法:初始化参数,在创建Filter时自动调用,当我们需要设置初始化参数的时候,可以写到该方法中。
  • doFilter()方法:拦截到要执行的请求时,doFilter就会执行。这里面写我们对请求和响应的预处理
  • destory()方法:在销毁Filter时自动调用

2、Filter的生命周期

 Filter的创建和销毁由web服务器控制服务器启动的时候,Web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。拦截到请求时,执行doFilter方法,可以执行多次。服务关闭时,web服务器销毁Filter的实例对象

Filter对象 - FilterConfig

用户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装filter初始化参数的FilterConfig对象传递进来。
通过filterConfig对象的方法,可以获得:String getFilterName():得到filter名称String getInitParameter(String name):返回在部署描述中指定名称的初始化参数的值,如果不存在返回nullEnumeration getInitParameterNames():返回过滤器的所有初始化参数的名称的枚举集合public ServletContext getServletContext():返回Servlet上下文对象的引用

过滤器链 - FilterChain

一组过滤器对某些web资源进行拦截,那么这组过滤器就成为过滤链。过滤器的执行顺序和<filter-mapping>有关(谁在前先执行谁)

过滤器Filter方法详解(init,doFileter,destory)相关推荐

  1. Java过滤器Filter使用详解

    <div id="post_detail"> 转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6374212.html 在我的项目 ...

  2. pandas数据分组聚合——groupby()、aggregate()、apply()、transform()和filter()方法详解

    数据分组 数据分组就是根据一个或多个键(可以是函数.数组或df列名)将数据分成若干组,然后对分组后的数据分别进行汇总计算,并将汇总计算后的结果进行合并,被用作汇总计算的函数称为聚合函数.数据分组的具体 ...

  3. java过滤器filter过滤某个包_Java过滤器Filter使用详解

    过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如 ...

  4. html页面设置拦截器,SpringBoot拦截器Filter的使用方法详解

    SpringBoot拦截器Filter的使用方法详解 发布时间:2020-08-27 22:44:03 来源:脚本之家 阅读:107 作者:玉天恒 前言: 最新Servlet 3.0拦截器的使用 1. ...

  5. JavaWeb中filter的详解及应用案例

    JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...

  6. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  7. Photoshop CS 中的“照片滤镜/Photo Filter”命令详解(转)

    Photoshop CS 中的"照片滤镜/Photo Filter"命令详解(转)[@more@] 这是一个跟摄影有关的重要图像调整命令. 有关这一命令的教程,现在网上没一个能说得 ...

  8. vue如何过滤html标签,Vue过滤器filters使用详解

    这次给大家带来Vue过滤器filters使用详解,Vue过滤器filters使用的注意事项有哪些,下面就是实战案例,一起来看一下. 示例代码 采用vue单文件组件,使用moment插件格式化日期 {{ ...

  9. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

最新文章

  1. RequireJS示例
  2. AI与BCI相结合读取大脑数据,根据个人喜好生成图像
  3. LNK1146: 没有用选项“/LIBPATH:”指定的参数
  4. python的读取纯文本文件的几种模式
  5. php 502.88,Nginx+PHP-FPM 访问出现 502错误
  6. 微软Azure的access control - IAM
  7. SQL Server中,with as使用介绍
  8. (五)官方Neo4j 3.3.9 Java API例子
  9. 铁路从未授权任何第三方平台售票服务,各大旅游网站哪来的接口?
  10. 最长XXX子序列(什么都好啦)
  11. android-25是什么手机,25.手机摄影的20个常用APP
  12. 继承中的盲点,成员或者析构函数,成员函数中为什么有时候需要定义,有时候不需要呢,(已解决)...
  13. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
  14. 信息系统项目管理师考试论文写作复习笔记(4)-范围管理论文2
  15. 分享几个软件测试逻辑思维和综合面试题
  16. 数学建模常用算法案例k—means聚类分析
  17. arm mali 天梯图_最全处理器排名:2017年处理器天梯图
  18. Git 撤销已提交的文件
  19. 计算机基础课程听课记录,听课记录-计算机应用基础
  20. 【金融风控-贷款违约预测】数据挖掘学习:5.模型融合

热门文章

  1. vue中 基于echart地图功能 省级地图下钻和返回、发射线、水波涟漪等功能展示
  2. 红米Note 3如何卡刷开发版启用Root权限
  3. 在ie edge中消除默认出现的密码框小眼睛标志
  4. 8个成语接龙首尾相连_八拜为交成语接龙
  5. 计算机开机总显示密码错误如何解决,快速解决win10开机密码错误开不了机的问题...
  6. 互联网电商平台运营模式
  7. Android高斯模糊、高斯平滑(Gaussian Blur)【2】
  8. 理解elasticsearch
  9. 《娱乐至死》读书笔记(part3)--无知是可以补救的,但如果我们把无知当成知识,我们该怎么做呢?
  10. 带下划线点域名解析失败