0
点赞
收藏
分享

微信扫一扫

Filter过滤器《笔记》

weednoah 2022-03-26 阅读 85

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文件中
举报

相关推荐

【笔记】过滤器filter

过滤器filter

Filter过滤器

过滤器-filter

JavaWeb笔记(8):Filter过滤器

【VUE】过滤器Filter

Vue过滤器filter

0 条评论