Head First Servlets&Jsp 读书摘记11——【过滤器的威力】

本文摘自《Head First Servlets&Jsp》,深入探讨了过滤器在Servlet应用中的作用。过滤器在请求到达servlet之前和响应返回给客户之后起作用,它们是模块化的,可以通过DD配置,并在特定的调度类型下运行。过滤器的生命周期包括init(), doFilter()和destroy()方法。特别地,doFilter()方法的调用顺序和响应处理需要谨慎,因为一旦调用chain.doFilter(),输出将无法被过滤器修改。解决这一问题的方法是创建自定义响应实现和输出流包装器,以便在Servlet输出后进行处理。" 112254190,5626569,JavaCV视频截图实战:高效连续截图与覆盖截图功能解析,"['javacv连续截图', 'javacv视频截图', 'rtsp截图', 'rtmp截图', 'hls截图']
摘要由CSDN通过智能技术生成

接近尾声,还来点实用的技术活儿——过滤器的威力!

124、与servlet非常类似,过滤器就是Java组件,请求发送到servlet之前,可以用过滤器截获和处理请求,另外servlet结束工作之后,在响应发回给客户之前,可以用过滤器处理响应。(P672);

125、过滤器是模块化的,而且可以在DD中配置,容器根据DD中声明来确定何时调用过滤器。(P672~673);

126、过滤器不知道谁来调用它们,也不知道过滤器链中下一个是谁!(675);

127、过滤器的生命周期:

首先要有一个init();

真正的工作在doFilter(ServletRequest req, ServletResponse rsp, FilterChain chain)中完成;

最后来个destroy()。

128、过滤器可以应用于直接来自客户的请求,这当然很棒。但是如果请求来自转发包含请求分派和/或错误处理器呢?

Servlet规范2.4提供了解决办法。(P679);

129、过滤器声明规则:

1)必须要有<filter-name>;

2)必须要有<url-pattern>或<servlet-name>元素其中之一;

3)可以有0~4个<dispatcher>元素;

4)REQUEST值表示对客户请求启用过滤器。如果没有指定<dispatcher>元素,则默认为REQUEST;

5)INCLUDE值表示对由一个include()调用分派来的请求启用过滤器;

6)FORWARD值表示对由一个forward()调用分派来的请求启动过滤器;

7)ERROR值表示对错误处理器调用的资源启动过滤器。

(P679too);

130、Rachel这样介绍doFilter()方法中代码的基本结构——首先,完成与请求相关的工作,然后调用chain.doFilter(),最后,当Servlet(以及链中当前过滤器之后的所有其他过滤器)工作结束,而且控制返回到原先的doFilter()方法时,可以对响应在做点工作。(P682);

131、

public void doFilter(request, response, chain){

    //请求处理放在这里

    chain.doFilter(request, response);

    //这里完成压缩逻辑

}

chain.doFilter()调用返回,过滤器希望拿到输出,并开始处理点什么……不过,已经太晚了!输出已经发送给客户!容器并没有为过滤器把输出缓存起来。等到过滤器自己的doFilter()方法至于(概念)栈的栈顶时,过滤器再想影响输出已为时已晚。

(P683);

132、建立一个自己的响应实现,并把它通过chain.doFilter()调用传递到Servlet。而且这个定制响应实现还必须包含一个定制的输出流(处理),因为这是我们的目标,在Servlet写输出之后并且在输出返回给客户之前,过滤器就能拿到这个输出。(P685, 689);

133、包装器包装了实际的请求或响应对象,而且调用委托给(传给)实际的对象,还允许你对定制请求或响应做所需的额外处理。(P687);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值