Filter过滤器《笔记》

Filter过滤器

  • 当前的OA项目存在什么缺陷?
    • 公共代码,都需要重复编写,并且没有达到复用
    • 可以使用Filter来实现
  • 我们可以把Servlet程序看作是一个最终要执行的目标。我们可以使用过滤器Filter来添加过滤代码,这个过滤代码可以添加到Servlet执行之前,也可以添加到Servlet执行之后,Filter可以做到Servlet这个目标程序之前过滤,也可以在目标程序执行之后过滤。

一个过滤器怎么写?

  • 编写一个Java类实现一个接口:javax.servlet.Filter,并且实现这个接口中的所有方法
    • doFilter()
  • 然后在xml中配置信息,或者用注解
  • 目标servlet是否执行,取决两个条件:
    • 在过滤器当中是否编写了:chain.doFilter(request,response);代码
    • 用户发送的请求路径是否和servlet的请求路径一致
  • 注意:
    • servlet对象默认情况下,在服务器启动的时候是不会新建对象的
    • Filter对象默认情况下,在服务器启动的时候会新建对象
    • Servlet是单例的,Filter也是单例的。(单实例)
  • chain.doFilter(request,response);这行代码的作用:
    • 执行下一个过滤器,如果下面没有过滤器了,执行最终的servlet
  • 注意:Filter的优先级,天生就比Servlet优先级高
    • /a.do对应一个Filter,也对应一个servlet,那么一定是先执行Filter,然后再执行servlet
  • 关于Filter的配置路径:
    • /a.do、/b.do、这些配置方式都是精确匹配
    • /*匹配所有的路径
    • *.do后缀匹配。不要以/开始
    • /dept/*前缀匹配
  • 在web.xml文件中进行配置的时候,Filter的执行顺序是什么?
    • 依靠filter-mapping标签的配置位置,越靠上优先级越高
  • 过滤器的调用顺序,遵循数据结构——栈

责任链设计模式

  • 过滤器最大的优点:
    • 在程序编译阶段,不会确定调用顺序,因为Filter的调用顺序是配置到web.xml文件中的,只要修改web.xml配置文件中的filter-mapping的顺序就可以调整Filter的执行顺序,显然Filter的执行顺序是在程序运行阶段动态组合的。那么这种设计模式就被称为责任链设计模式
  • 责任链设计模式最大的核心思想:
    • 在程序运行阶段,动态的组合程序的调用顺序
  • 一般过滤器配置在xml文件中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值