1.filter概念与用处:

filter 直译为过滤器,是servlet中的重点对象,是web应用组件,是个典型的处理链

主用用于: Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。

例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

2.filter的生命周期: (init方法与destroy方法只会执行一次)

创建: 由WEB服务器负责,服务器启动及创建,与servlet中的load-on-startup配置为1时效果相同 (只创建一次)

初始化:创建Filter对象实例后及会调用init()方法,接着被Web容器保存进应用级的集合容器中去了等待着,用户访问资源 (只初始化一次)

拦截: 当用户访问的url被Filter的url-pattern拦截时,Filter调用doFilter方法(多次拦截也不会再初始化filter)

消亡: 当web应用服务被停止或重新装载了,Filter调用destroy方法,Filter销毁

3.filter的拦截原理:

Filter接口中有一个doFilter方法,当开发人员编写好Filter类实现doFilter方法,并配置对哪个web资源进行拦截后,

WEB服务器每次在调用web资源的service方法之前(服务器内部对资源的访问机制决定的),都会先调用一下filter的doFilter方法。

4.filter的应用注意事项:

1> filter-mapping标签中servlet-name与url-pattern。
                Filter不仅可以通过url-pattern来指定拦截哪些url匹配的资源。

而且还可以通过servlet-name来指定拦截哪个指定的servlet(专门为某个servlet服务了,servlet-name对应Servlet的相关配置)。
            2> filter-mapping标签中dispatcher。
                指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。

用户可以设置多 个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。
      REQUEST:
        当用户直接访问页面时,Web容器将会调用过滤器。

如果目标资源是通过RequestDispatcher的include()或forward()方法访问或ERROR情况时,那么该过滤器就不会被调用。
      INCLUDE:
            如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
               FORWARD:
                       如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
      ERROR:
                       如若在A.jsp页面page指令中指定了error属性=examError.jsp,那么A.jsp中若出现了异常,会跳转到examError.jsp中处理。

而在跳转到examError.jsp时,若过滤器配置了ERROR的dispather那么则会拦截,否则不会拦截。

5.filter的实例入门:

1、新建一个类,实现Filter接口
      2、实现doFilter()方法,打印一句话,来证明能够进行拦截
      3、在web.xml中进行配置(参照Servlet配置)
      4、访问一个页面,看看能不能拦截
     

转载于:https://www.cnblogs.com/yiyongyao/p/4501059.html

Filter的详解与配置应用相关推荐

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

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

  2. 详解keepalived配置和使用

    详解keepalived配置和使用 一.keepalived简介: keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Ke ...

  3. mysql mybatis配置_mybatis详解 与配置mybatis+spring+mysql.doc

    mybatis详解 与配置mybatis+spring+mysql.doc 还剩 30页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...

  4. rsync的介绍及参数详解,配置步骤,工作模式介绍

    rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...

  5. 企业网络分配项目,从连接到登陆,一步步来详解交换机配置

    弱电几乎大部分的项目都跟网络有关,而所有的网络都离不开交换机的配置,很多朋友弱电项目做的比较困难,主要还是对网络技术不了解,尤其是交换的配置,那么今天我们以实例来讲解,企业网络分配项目,从连接到登陆, ...

  6. ElasticSearch预警服务-Watcher详解-Schedule配置

    介绍 Watcher服务详解-定时器的设定 关于Schedule配置选择,Watcher提供了丰富的时间语法支持,采用UTC时间,来我们一起看下如何设置: 支持的设置方式: hourly:按小时周期设 ...

  7. 详解typora配置华为云图床

    详解typora配置华为云图床 当前有很多不同的博客社区,不同的博客社区使用的编辑器也不尽相同,大概可以分为两种,一种是markdown格式,另外一种是富文本格式.例如华为云开发者社区文章编辑模式分为 ...

  8. MySQL主从同步详解与配置

    https://zhuanlan.zhihu.com/p/335142300 MySQL主从同步详解与配置 第一部分[原理解析] * 应用背景* MySQL数据库自身提供的主从复制功能可以方便的实现数 ...

  9. 详解LVS配置DR模型

    详解LVS配置DR模型 准备: 三台服务器,一台LVS,两台RS 操作 LVS: 8是随便写的 新配置一个虚拟网卡,作为LVS的VIP,之后的访问就用这个"192.168.28.150&qu ...

最新文章

  1. 中国知网PCNI号码
  2. 工厂方法模式和简单工厂模式的区别
  3. 不可不知的C#基础 1. -- Extension 扩展方法
  4. Html常用标签元素
  5. Spring 整合 Quartz 分布式调度
  6. 批处理 设置电脑最佳性能_批处理最佳做法
  7. 软件定义汽车带来的困境——如何破局?
  8. android 图片方向,Android图片处理:识别图像方向并显示
  9. 新路由3鸡血版固件_NEWIFI3老毛子鸡血驱动版固件
  10. 使用命令运行jmeter并自动生成测试报告
  11. 测试打印机性能的软件,打印性能测试(一)
  12. 局域网ip扫描工具_IP Scanner局域网IP扫描工具
  13. ftp-cmd常用命令
  14. CSDN 写文章报错:标题含有非法字符,请修改的解决方法
  15. Mr. Kitayuta vs. Bamboos[二分+贪心][图像分析]
  16. JAVA将时间如何将时间格式设置 yyyy-MM-ddTHH:mm:ssZ
  17. 微信公众平台模板消息颜色错位bug以及修复
  18. 南宁市计算机技术专业学校,南宁电脑技术学校有哪些
  19. python for i in 字符串_python中for in的用法
  20. 经度纬度 正则表达式

热门文章

  1. Spring MVC漏洞学习总结
  2. 什么是软件测试架构师?
  3. BurpSuite学习第七节--Sequencer+Decoder
  4. ArrayList add(int index,E element)
  5. Vue2.0 入门 安装Vue-cli
  6. Communications link failure
  7. c语言使用zlib实现文本字符的gzip压缩与gzip解压缩
  8. PC机I/O端口分配列表
  9. c语言指针概述,C语言指针概述.doc
  10. linux 文泉驿正黑字体,文泉驿字体系列打包下载-文泉驿字体下载-西西软件下载...