过滤器(Filter)的简介

过滤器(Filter): 能够完成筛选不需要数据的工具(东西).

类似于生活中的净水器,香烟过滤嘴,滤纸, 收费站等.------->单向的.

Web中:  过滤器其实就是服务端的一个程序(程序的最小单元就是类). 在Web开发中,过滤器其实就是一个Web组件(Servlet/Filter/Listener),其实就是一个特殊的类. 一个类实现javax.servlet.Servlet接口:--->Servlet类. 一个类实现javax.servlet.Filter接口:----->Filter类.

过滤器的作用: 过滤器可以对所有的请求或者响应做拦截操作.

1:以常规的方式调用资源(Servlet/JSP);

2:利用修改过的请求信息调用资源;

3:调用资源之后,但在响应到客户端之前,对响应做出修改;

4:阻止当前资源调用,代之转到其他资源.

Filter的开发和使用

开发Filter

(1):自定义一个类(XxxFilter,Xxx表示功能名),实现于javax.servlet.Filter接口.

(2):在web.xml中做配置,告诉Tomcat来帮我管理这一个类(负责了该类的生命周期).

使用:@WebFilter("/hello.jsp")      或者在web.xml里面设置拦截器<filter>          <filter-name>XxxFilter</filter-name>         <filter-class>XxxFilter类的全限定名</filter-class></filter>     <filter-mapping>          <filter-name>XxxFilter</filter-name>          <!--表示:当前Filter只对哪些资源做过滤/拦截操作,只对hello.jsp做拦截-->          <url-pattern>/hello.jsp</url-pattern>      </filter-mapping>

Filter的生命周期方法

(1):void init(FilterConfig config): 初始化方法 (2):void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):执行过滤的方法(每一次请求都会执行过滤) (3):void destroy():销毁方法 执行的流程:   在启动Tomcat服务器的时候,就会执行构造器和init方法.     构造器--->init方法   -----> (  doFilter方法  )N次------->destroy方法

chain:链,链条,多个链的节点组合而成.

FilterChain:过滤器链,多个过滤器按照一定的顺序排列在一起.

FilterChain.doFilter(req,resp):放行(放行给下一个Filter或资源)

Filter映射细节

1、多个Filter共存的时候,拦截的先后顺序由谁来决定?

由<filter-mapping>的配置先后顺序来决定.

2、Filter的对哪些资源做过滤.:

<url-pattern>被过滤的资源名称</url-pattern>

<url-pattern>/hello.jsp</url-pattern>:只对/hello.jsp做过滤.

<url-pattern>/*</url-pattern>:对所有的资源做过滤操作.

<url-pattern>/system/*</url-pattern>:只对以/system/打头的资源做过滤.

<url-pattern>*.do</url-pattern>:只对以.do结尾的资源做过滤

3、可以通过<init-param>元素来给当前Filter配置初始化参数.

通过FilterConifg对象.getInitParameter(String name)来获取初始化参数.

4、Servlet,Filter,Listener都属于Web组件.

一般的,先配置监听器,再配置过滤器,最后配置Servlet.

5、<filter-mapping>中的子元素<dispatcher>表示对哪些操作执行过滤.

<!-- 缺省情况:REQUEST -->                    <dispatcher>REQUEST</dispatcher>               <!-- 对请求转发做拦截 -->         <dispatcher>FORWARD</dispatcher>         <!-- 对请求包含做拦截 -->                   <dispatcher>INCLUDE</dispatcher>         <!-- 出错之后再跳转到全局的结果视图之前做拦截 -->         <dispatcher>ERROR</dispatcher>

请求编码过滤器:CharacterEncodingFilter

后期继续补充~

(Filter)过滤器的使用相关推荐

  1. [JAVA EE] Filter过滤器

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

  2. Filter(过滤器)

    一.Filter过滤器(重要) Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作. 1.Filter快速入门 1.1.步骤: 1. 创建一个类实现Filter接口 2. 重写接口中方 ...

  3. filter[过滤器]使用大全

    一.页面编码过滤器 1.开发EncodingFilter.java文件,继承自javax.servlet.Filter: package bluemoon.crm.systemmanage.strut ...

  4. (JavaWeb)Filter过滤器

    Filter过滤器 Filter:过滤器,用来过滤网站的数据. 自动登录 统一设置编码格式 访问权限控制 敏感字符过滤等 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或serv ...

  5. Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值

    第一步,对request请求进行增强: /*** author: zhangxueliang* date: 2019-08-23*/ public class ParameterServletRequ ...

  6. spring boot Filter过滤器的简单使用

    springboot使用Filter过滤器有两种方式: 一种是实现Filter接口然后通过@Component注解向项目加入过滤器 另一种是通过配置类来配置过滤器 @Component public ...

  7. 【Servlet】Filter过滤器详解、使用示例

    Filter过滤器讲解 定义 过滤器处于浏览器与servlet之间,是一个实现了 javax.servlet.Filter 接口的 Java 类 客户端发送的请求.服务器发送的资源,需要通过过滤器,才 ...

  8. JBuilder9+Weblogic8.1——Filter过滤器在Jbuilder9中的运用

    JBuilder9+Weblogic8.1--Filter过滤器在Jbuilder9中的运用 一.首先建立工程FilterTest,建立Web Application,名称也为FilterTest. ...

  9. java filter教程_Java Web Filter 过滤器学习教程(推荐)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  10. vue+filter过滤器(多参数)传参 - 代码篇

    vue+filter过滤器(多参数)传参 - 代码篇 传1个参数 //html {{a1 | filterAa}} //js filters:{filterAa(a1){// a1是传入的参数} } ...

最新文章

  1. 上传图片被防火墙拦截_Web安全:文件上传漏洞
  2. 阎王爷让我给他做个生死簿后台管理系统
  3. Windows Phone 7用户界面原型截图汇总
  4. 《深入浅出MFC》第六章 MFC程序的生死因果
  5. pyinstaller使用方法及案例
  6. 计算机应用基础教程作业脑图 车辆工程学院 冯大昕
  7. oracle导入impdp
  8. 收藏 | 循环神经网络 RNN 详细图解!
  9. 华为否认削减手机产量;百度副总裁郑子斌将离职;开发者对苹果发集体诉讼 | 极客头条...
  10. 西南科技大学计算机专业宿舍条件怎么样,西南科技大学宿舍条件,宿舍环境图片(10篇)...
  11. 关于 Nginx 0day 漏洞,需要采取哪些措施?
  12. java 日期 英文月份_java日期月份转英文格式
  13. android动态壁纸的制作教程,巧用Windows自带工具,简易制作动态壁纸教程
  14. 互联网背景下为什么会出现NoSQL?
  15. 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
  16. DedeCMS快速建站
  17. 敬业签云便签提示“基础连接已关闭,发送时发生错误!”如何解决
  18. 核心业务8:提现+展示还款信息和回款信息
  19. Studio 3T 的Query Builder使用
  20. opencv + contrib windows下源码编译

热门文章

  1. 基于MATLAB的BR神经网络交叉验证实践
  2. 【HTTP】【HTTP协议分享】
  3. 联想服务器改win7系统教程视频,联想台式电脑win10改win7系统教程
  4. 职场心理 自述-共勉
  5. 微信小程序实现图片或gif预加载
  6. OpenGL ES 从零开始系列08:交叉存取顶点数据
  7. 我的第一篇博客“遇见未来的自己”
  8. 洛谷2763 试题库问题
  9. 4月书讯!15本新书闭眼入!
  10. Edraw Max试用感受