Filter 的应用场景、Filter 的目标资源、小结| 学习笔记

简介: 快速学习 Filte r的应用场景、Filter 的目标资源、小结。

开发者学堂课程【Filte(过滤器)、Listener(监听器):Filter 的应用场景、Filter 的目标资源、小结】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/38/detail/878


Filter 的应用场景、Filter 的目标资源、小结


内容介绍

一、过滤器的应用场景。

二、案例分类。

三、设置目标资源。

四、Filter mapping 的子元素。

五、Filter小结。


一、过滤器的应用场景。

1、执行目标资源之前做预处理工作,例如设置编码,这种试通常都会放行 ,只是在目标资源执行之前做一些准备工作。

(批注:几乎所有的 Servlet 中都需要写request.setCharacterEndoing()可以把它写到一个Filter中。)

过滤器不会做拦截操作,只是设置编码。)

2、通过条件判断是否放行,例如校验当前用户是否已经登录,或者用户IP是否已经被禁用。(有拦截操作,判断Id是否在禁用区域。)

3、在目标资源执行后,做一些后续的特殊处理工作,例如把目标资源输出的数据进行处理。(批注:回程拦截!)

二、案例分类。

1、分IP统计访问次数:第一种预处理。

2、粗粒度权限控制:资源分为三个等级。如在淘宝中,为游客、会员、管理员,可以访问商品不可查询订单为游客等级,既可以访问商品又可查询订单的为会员等级,可以调价格的为管理员等级。

这属于第二种通过条件判断。

3、解决全站字符乱码:第一种预处理 。

4、页面静态化:第三种回程拦截,做后续处理。


三、设置目标资源。

在web.xml文件中部署Fiter时, 可以通过“*”来执行目标资源:

这一特性与Servlet完全相同!通过这一特性,我们可以在用户访问敏感资源时,执行过滤器,例如:admin/*可以把所有管理员才能访问的资源放到/admin路径下,这时可以通过过滤器来校验用户身份。

还可以为filter-mapping〉指定目标资源为某个Servlet,例如

< filter-mapping>

myfilter

/*


批注:/*表示过滤所有资源

< servlet>

< servlet-name>myservlet

< servlet-class> cn.itcast.servlet.MyServlet



< servlet-name>myservlet< servlet-name>

/abc>

< sevlet-mapping>


> myfilter< /filter-name>

< filter-class>cn.itcaat. filter.MyFilterilter-class>


< filter-mapping>

myfilter'

<servlet-name > myservlet servlet-name)

mapping>

批注: <servlet-name > myservlet servlet-name)

这里没有指定< url-patter>,而是指定< server-name>!注意,它与某个 servlet 的配置名称相同!

当用户访问http: localhost:8080/filtertest/abc时,会执行名字为 myservlet 的servlet ,这时会执行过滤器。

注:serlet-name 指定方式可以有多个。


四、Filter-mapping 的子元素。

五、Filter 小结。

1、filter 的三个方法。

①void init (filterConfig):在 Tomcat 启动时被调用;

②void destroy(): 在 Tomcat 关闭时被调用;

③void doFitertServletRequest,ServletResponse,FterChain):每次有请求时都调用该方法。

2、FilterConfig类: 与 ServletConfig 相似,用来获取 Fiter 的初始化参数。

①ServletContext getServletContext(): 获取 ServletContext 的方法;

②String getFiterName):获取 Fiter 的配置名称;

③string getnitParametert(string name):获取Fiter的初始化配置,与〈init-param〉元素对应;

④Enumeration getinitParameterNames(): 获取所有初始化参数的名称。

3、FRerChain 类

void doFiter(ServletRequest,ServletResponse):放行!表示执行下一个过滤器,或者执行目标资源,可以在调用 FiltetChain 的 doFiter()方法的前后添加语句,在FilterChain的dofiter()方法之后的语句会在目标资源执行之后执行。

4、四种拦截方式 :REQUEST,FORWARD,INCLUDE,ERROR,默认是 REQUEST 方式。

①REQUEST:拦截直接请求方式;

②FORWARD:拦截请求转发方式 ;

③INCLUDE:拦截请求包含方式;

④ERROR:拦截错误转发方式。





            </div>
相关文章
|
2天前
|
搜索推荐 UED Python
动态多条件查询:理解`filter_by`与`filter`提升Web应用搜索功能
了解SQLAlchemy中`filter_by`与`filter`对提升Web应用搜索功能至关重要。`filter_by`简化了等值查询,而`filter`则支持复杂的表达式和逻辑组合。通过动态获取用户输入,构建基础查询并根据条件应用过滤,可以创建灵活的搜索系统。结合分页和排序,为用户提供定制化搜索体验。掌握这两者,能增强应用的交互性和实用性。
8 0
动态多条件查询:理解`filter_by`与`filter`提升Web应用搜索功能
|
11月前
|
XML Java 应用服务中间件
Filter 过滤器--基本原理--Filter 过滤器生命周期--过滤器链--注意事项和细节--全部应用实例--综合代码示例
Filter 过滤器--基本原理--Filter 过滤器生命周期--过滤器链--注意事项和细节--全部应用实例--综合代码示例
104 0
|
11月前
Filter过滤器概念及生命周期
Filter过滤器概念及生命周期
120 0
|
12月前
|
Java
filter是如何工作的?
Filter是Web.xml中一个常用的配置,可以通过<filter>和<filter-mapping>组合起来使用Filter。
36 0
|
Java
Filter概述、接口及配置
Filter概述、接口及配置
10731 0
|
Java 应用服务中间件 Spring
自定义Filter后,我的业务代码怎么被执行了多次?
若要求构建的过滤器针对全局路径有效,且无任何特殊需求(主要针对 Servlet 3.0 的一些异步特性),则完全可直接使用 Filter 接口(或继承 Spring 对 Filter 接口的包装类 OncePerRequestFilter),并使用**@Component** 将其包装为 Spring 中的普通 Bean,也可达到预期需求。
135 0
|
缓存
【Elastic知识简报】query与filter的区别
1、因此filter的查询是没有评分的,而query的查询是有评分的 2、filter有相应的缓存机制,可以提高查询效率,并且因为filter不计算相关性评分,所以查询速度更快
112 0
|
SQL 开发框架 数据处理
OR-Mapping 设计改进(数据增加改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(数据增加改进)
92 0
|
SQL Java 开发者
OR-Mapping 设计改进(数据删除改进) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(数据删除改进)
74 0
|
数据安全/隐私保护
ES ip filter 功能探秘
要开RBAC,不然无效果。
631 0

热门文章

最新文章