6.过滤器(Filter)

简介: ---恢复内容开始---1.过滤器简介:过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。过滤器 功能:分析请求,将请求发送给指定的资源或自己创建一个响应返回;在请求到达服务器端前处理请求,设置请求信息,将请求封装成符合规则的对象在响应到达客户端前处理响应,将响应封装成符合规则的对...

---恢复内容开始---

1.过滤器简介:

过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。

过滤器 功能:

分析请求,将请求发送给指定的资源或自己创建一个响应返回;在请求到达服务器端前处理请求,设置请求信息,将请求封装成符合规则的对象在响应到达客户端前处理响应,将响应封装成符合规则的对象

不同功能的过滤器:

身份验证过滤器(Authentication Filters)
数据压缩过滤器(Data compression Filters)
加密过滤器(Encryption Filters)
触发资源访问事件过滤器(Filters that trigger resource access events )
图像转换过滤器(Image Conversion Filters)
日志记录和审核过滤器(Logging and Auditing Filters)
MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)
标记化过滤器(Tokenizing Filters)
XSL/T 过滤器(XSL/T Filters),转换 XML 内容。

过滤器的执行:

 

过滤器处理请求采取以下3种行动之一
过滤器自身产生一个响应,返回给客户端
把请求转发给过滤器链中的下一个过滤器,如果是最后一个过滤器则将请求转发给请求指定资源
把请求转发到另一资源。

过滤器实例:

AuthorityFilter
编码(实现Filter接口)
部署(在web.xml配置)
注册过滤器
配置虚拟路径
运行

2.过滤器AI

   Filter接口:

init()方法
Servlet容器最先调用过滤器的init()方法,初始化过滤器,生命周期中只调用一次
doFilter()方法
Servlet容器调用doFilter()方法处理请求
destroy()方法
Servlet容器最后调用destroy()方法,释放过滤器所占的资源。

接口/类

所处包

描述

Filter

javax.servlet

过滤器类实现此接口

FilterChain

javax.servlet

该接口实现对象实例由容器负责创建

FilterConfig

javax.servlet

提供初始化参数

ServletRequestWrapper

javax.servlet

ServletRequest接口的便利实现

ServletResponseWrapper

javax.servlet

ServletResponse接口的便利实现

HttpServletRequestWrapper

javax.servlet.http

HttpServletRequest接口的便利实现

HttpServletResponseWrapper

javax.servlet.http

HttpServletResponse接口的便利实现

3.配置过滤器:

 <filter>
     <filter-name>

     <filter-class>

     <description>

      <init-parm>

             <parm-name>

              <parm-value>

     <filter-mapping>

      <filter-name>

     <url-pattern>

   Filter过滤器链:

Web容器加载的顺序:web.xml文件中配置的Filter的倒序
拦截执行顺序:web.xml文件中配置的Filter的正序
销毁顺序:web.xml文件中配置的Filter的倒序

Filter注意事项:

Filter配置过滤器链
Servlet容器可以对同一个过滤器对象运行多个线程来同时处理多个请求。

 

相关文章
Python中的setdefault,set和default
setdefault,set 是设置,default 是默认
877 0
Python中的setdefault,set和default
服务监控:保障业务稳定运行的关键
随着数字化时代的到来,企业和组织对于其在线服务的可用性和性能提出了越来越高的要求。服务监控成为了确保业务连续性的关键工具之一。在本文中,我们将深入探讨服务监控的重要性,以及如何建立一个高效的监控系统来保障业务的稳定运行。
做了那么多架构,你真的懂 SOA 了吗?
如何统一看待和区别分层架构、微服务架构、分布式架构等主流架构?什么是 SOA?我们采用 SOA 的目的是什么?什么是服务化的本质?如何设计服务以及服务化架构呢?阿里高级技术专家程彦分享他对面向服务架构的一些看法,并给出相关的步骤和方案,较长,同学们可收藏后再看。
3849 0
做了那么多架构,你真的懂 SOA 了吗?
CAP:Serverless + AI 让应用开发更简单
对于众多开发者而言,Serverless 架构的核心优势在于其能够无缝集成多种云产品与组件,从而使得开发者可以更加专注于核心业务逻辑和创新。此外,Serverless 架构还提供了按量付费的灵活计费模式,进一步降低了资源成本。使用云应用开发平台 CAP,在 AI 领域,企业就可以专注于模型训练、算法优化等关键任务,让 AI 应用的开发、部署以及全生命周期的管理更加简单。可以预见 Serverless 技术将催生一系列创新且有趣的应用,而这些应用将不断拓展 AI 技术的边界。
MySQL高级篇——关联查询和子查询优化
左外连接:优先右表创建索引,连接字段类型要一致、内连接:驱动表由数据量和索引决定、 join语句原理、子查询优化:拆开查询或优化成连接查询
MySQL高级篇——关联查询和子查询优化
动态规划详解背包问题及实践(附C++代码)
背包问题是一个经典的组合优化问题,它可以被抽象为一个把物品放入背包中的过程,以求最终背包中物品价值的最大化
BXA
1064 0
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
1525 0
解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching
【Git】解决Untracked Files Prevent Checkout的问题
【Git】解决Untracked Files Prevent Checkout的问题
3110 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等