过滤器Filter
来源:互联网 发布:廖雪峰python教程mobi 编辑:程序博客网 时间:2024/05/29 13:10
一、 过滤器 Filter
1. why Filter?
针对通用WEB服务、功能,透明的处理
2. 什么是 Servlet Filter?
过滤是 Servlet 2.3 版才引入的新特性。过滤器可以认为是实现 Http 请求、响应以及头信息等内容的传送的代码片断。
过滤器并不能创建响应,但它可以“过滤”传给 servlet 的请求,还可以“过滤”从 servlet发送到客户端的响应;
它不仅能处理静态内容,还可以处理动态内容。换而言之,filter 其实是一个“servlet chaining”(servlet 链)。
一个 filter 包括:
1) 在 servlet 被调用之前截获;
2) 在 servlet 被调用之前检查 servlet request;
3) 根据需要修改 request 头和 request 数据;
4) 根据需要修改 response 头和 response 数据;
5) 在 servlet 被调用之后截获.
3. 过滤器的生命周期
Filter 组件的生命周期与 Servlet 的类似。
过滤器有四个阶段(与servlet类似):
1) 实例化;
2) 初始化(调用init()方法);
3) 过滤(调用doFilter()方法);
4) 销毁(调用destroy()方法);
4. Filter编程
1)定义Filter(implements Filter)
2)配置Filter
配置对哪些资源进行过滤(url)
<filter>
<filter-name>Logger</filter-name> //过滤器名
<filter-class>com.LoggerFilter</filter-class> //具体过滤器类
<init-param> //初始化参数
<param-name>xsltfile</param-name>
<param-value>/xsl/stockquotes.xsl</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Logger</filter-name>
<url-pattern>/*</url-pattern> //将过滤器应用于Web应用中的每个Web资源;可以只指定某个资源
</filter-mapping>
5. FilterChain
1) chain是如何配置,顺序
当同一个应用中配置了多个 filter 时,其执行顺序是如何的呢?
答:按 web.xml 中<filter-mapping>的顺序来执行的
2) chain.doFilter(req, resp)
调用下一个Filter,到最后一个Filter则正式调用 TargetServlet
3) 调用过程(类似于递归调用)
6. Filter的类型
Filter 有4种类型,主要体现在<filter-mapping>中的<dispatcher>属性:
<dispatcher>REQUEST</dispatcher> 默认,客户端的直接的请求,才触发该过滤器
<dispatcher>FORWARD</dispatcher> servlet 调用 rd.forward(req,resp)时触发
<dispatcher>INCLUDE</dispatcher> servlet 调用 rd.include(req,resp)时触发
<dispatcher>ERROR</dispatcher> 发生错误,跳转到错误页面时触发
1. why Filter?
针对通用WEB服务、功能,透明的处理
2. 什么是 Servlet Filter?
过滤是 Servlet 2.3 版才引入的新特性。过滤器可以认为是实现 Http 请求、响应以及头信息等内容的传送的代码片断。
过滤器并不能创建响应,但它可以“过滤”传给 servlet 的请求,还可以“过滤”从 servlet发送到客户端的响应;
它不仅能处理静态内容,还可以处理动态内容。换而言之,filter 其实是一个“servlet chaining”(servlet 链)。
一个 filter 包括:
1) 在 servlet 被调用之前截获;
2) 在 servlet 被调用之前检查 servlet request;
3) 根据需要修改 request 头和 request 数据;
4) 根据需要修改 response 头和 response 数据;
5) 在 servlet 被调用之后截获.
3. 过滤器的生命周期
Filter 组件的生命周期与 Servlet 的类似。
过滤器有四个阶段(与servlet类似):
1) 实例化;
2) 初始化(调用init()方法);
3) 过滤(调用doFilter()方法);
4) 销毁(调用destroy()方法);
4. Filter编程
1)定义Filter(implements Filter)
2)配置Filter
配置对哪些资源进行过滤(url)
<filter>
<filter-name>Logger</filter-name> //过滤器名
<filter-class>com.LoggerFilter</filter-class> //具体过滤器类
<init-param> //初始化参数
<param-name>xsltfile</param-name>
<param-value>/xsl/stockquotes.xsl</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Logger</filter-name>
<url-pattern>/*</url-pattern> //将过滤器应用于Web应用中的每个Web资源;可以只指定某个资源
</filter-mapping>
5. FilterChain
1) chain是如何配置,顺序
当同一个应用中配置了多个 filter 时,其执行顺序是如何的呢?
答:按 web.xml 中<filter-mapping>的顺序来执行的
2) chain.doFilter(req, resp)
调用下一个Filter,到最后一个Filter则正式调用 TargetServlet
3) 调用过程(类似于递归调用)
6. Filter的类型
Filter 有4种类型,主要体现在<filter-mapping>中的<dispatcher>属性:
<dispatcher>REQUEST</dispatcher> 默认,客户端的直接的请求,才触发该过滤器
<dispatcher>FORWARD</dispatcher> servlet 调用 rd.forward(req,resp)时触发
<dispatcher>INCLUDE</dispatcher> servlet 调用 rd.include(req,resp)时触发
<dispatcher>ERROR</dispatcher> 发生错误,跳转到错误页面时触发
阅读全文
0 0
- 过滤器Filter
- 过滤器Filter
- Filter 过滤器
- 过滤器 filter
- 过滤器filter
- 过滤器,Filter
- 过滤器Filter
- filter--过滤器
- 过滤器Filter
- filter过滤器
- Filter过滤器
- filter过滤器
- Filter过滤器
- Filter过滤器
- Filter 过滤器
- Filter过滤器
- Filter(过滤器)
- filter过滤器
- [LeetCode] 554. Brick Wall
- maven资源库
- 适配器模式
- Mac下Nginx启动、重启和关闭
- Swarm、Fleet、Kubernetes、Mesos
- 过滤器Filter
- 直接插入排序
- Muduo网络库源码分析(二) 定时器TimeQueue,Timer,TimerId
- 数据结构学习—“一般树”的基本概念和知识
- 解析HL7协议
- 29STL之Queue
- jndi
- 继承 以及this和super关键字
- 香港必理痛儿童退烧止痛药水 用量详解 (Panadol)