Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。下面来详细介绍一下过滤器。

过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。它使用户可以改变一个request和修改一个 response.。Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。

过滤器如何实现拦截

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

Filter的生命周期

(1)Filter接口中有三个重要的方法。

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

(2)Filter的生命周期

    Filter的创建和销毁由web服务器控制。

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

转载于:https://www.cnblogs.com/pawn2018/p/10708764.html

srtvlet filter相关推荐

  1. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  2. 2021年大数据常用语言Scala(二十四):函数式编程 过滤  filter

    目录 过滤  filter 定义 方法签名 方法解析 案例 参考代码 过滤  filter 过滤符合一定条件的元素 定义 方法签名 def filter(p: (A) ⇒ Boolean): Trav ...

  3. [JAVA EE] Filter过滤器

    Filter过滤器 ◼ 过滤器(Filter)可以动态地拦截请求和响应. ◼ 应用场景:过滤敏感词汇.防止SQL注入.设置字符编码.进行URL级 别的权限访问控制.压缩响应信息等. 启动文件DemoA ...

  4. Python 高阶函数filter、map、reduce、reversed、sorted及迭代器函数 iter

    1. filter(function, iterable) 过滤器,过滤掉不满足函数 function 的元素,重新返回一个新的迭代器. 其中 function 函数的第一个参数是可迭代对象 iter ...

  5. java 过滤器Filter

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  6. Jetty Cross Origin Filter解决jQuery Ajax跨域访问的方法

    当使用jQuery Ajax post请求时可能会遇到类似这样的错误提示 XMLHttpRequest cannot load http://xxxxxx. Origin http://xxxxxx ...

  7. 机器人控制算法——Bayes Filter贝叶斯滤波器

    机器人控制算法--Bayes Filter贝叶斯滤波器 概率方法 Probabilistic Approaches. Recursive Bayes Filter. Prediction and Co ...

  8. python filter过滤器的使用_如何在Python 3中使用过滤器、映射和精简

    的功能map和filter被有意更改为返回迭代器,并从内置并放置在functools.reduce. 所以,为了filter和map,你可以用list()像你以前一样看到结果. >>> ...

  9. java servlet filter_Java的Servlet、Filter、Interceptor、Listener

    写在前面: 使用Spring-Boot时,嵌入式Servlet容器可以通过扫描注解(@ServletComponentScan)的方式注册Servlet.Filter和Servlet规范的所有监听器( ...

最新文章

  1. 田渊栋的2021年终总结:多读历史!历史就是一个大规模强化学习训练集
  2. 如何通过svg代码还原图片_【UWA学堂】如何通过技术美术师来弥合代码与艺术之间的鸿沟?...
  3. 王家豪:求实探索,青春无问西东;脚踏实地,奋斗自成芳华 | 提升之路系列...
  4. Js:DOM对象操作常用的方法和属性
  5. 智能检测营销是否合规,网易易盾发布广告合规检测解决方案
  6. idle扩展插件_Python3.4学习笔记之 idle 清屏扩展插件用法分析
  7. 和某ZYC巨佬和XXY巨佬的随机挑战2总结
  8. Scaffold php,GitHub - yiiplus/scaffold: scaffold是一个基于Yii2高级项目模版工程化实现的应用程序...
  9. https 443 怎么改成80_阿里云购买免费https证书并用nginx配置代理详解(2020年9月)...
  10. 2步判断晶体管工作状态
  11. 数字图像处理理论课件(清华大学计算机科学与技术系)
  12. matlab sprintf函数的用法
  13. 内向交货单MIGO过账模板
  14. boost.asio网络错误码
  15. Vlan 间路由的方法
  16. 我的C盘满了 如何清理一下
  17. OpenHarmony分布式软总线与设备认证模块总结
  18. Azure云平台之游戏
  19. silverlight beet - 从xap文件中加载图片
  20. Android 10.0 飞行模式下禁用NFC功能

热门文章

  1. JS定时器使用,定时定点,固定时刻,循环执行
  2. 线性回归,logistic回归和一般回归
  3. Linux中拷贝和移动文件
  4. 关于windows防火墙关不掉解决办法
  5. 最近对项目代码做的一些更改和感想
  6. (九十三)蓝牙的基本使用
  7. Netty writeAndFlush() 流程与异步
  8. Asp.net MVC3.0 基于不同的角色显示不同的菜单
  9. 命令行下使用curl,采集数据遇到的问题。
  10. 火狐 和 IE 透明度的设置。