Servlet中的Filter

Servlet过滤器(Filter)介于与之相关的Servlet和或sp页面和客户之间,即:客户端—》Filter—》servlet或jsp。在《Servlet和JSP的关系以及此关系在Tomcat中的》中已简阐述了servlet和jsp的关系。本篇简要介绍下Filter的作用、对比下它与Servlet的创建过程以及Filter的简单使用!

开发web application 经常会遇到如下情况:

     1、访问特定资源(Web 页、JSP 页、servlet)时的身份认证 
     2、应用程序级的访问资源的审核和记录 
     3、应用程序范围内对资源的加密访问,它建立在定制的加密方案基础上 
     4、对被访问资源的及时转换, 包括从 servlet 和 JSP 的动态输出

 

而这些就是Filter能够处理的事情了,也由此我们可以将Filter分为如下几类:

    1、用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。
    2、日志Filter:详细记录某些特殊的用户请求。
    3、负责解码的Filter:包括对非标准编码的请求解码。
    4、能改变XML内容的XSLT Filter等。

 

通过上述介绍我们可以看出,Filter是个典型的处理链,它可以执行servlet之前和之后进行一番处理,并且可以有多个Filter配套使用。而它是在servlet2.3中提出的,其创建和使用过程与Servlet的创建和使用过程类似!分别包括如下两个过程:

 

servlet:1、创建servlet处理类(一般要实现doGet、doPost或service方法);2、配置web.xml文件(配置servlet标签和servlet-mapping标签)

 

Filter:  1、创建Filter处理类(要实现init、doFilter和destroy方法);    2、配置web.xml文件(配置filter标签和filter-mapping标签)

 

servlet举例参见《Servlet和JSP的关系以及此关系在Tomcat中的》,下面简单举例Filter,实现在访问jsp时设置字符集。

 

Filter处理类代码如下:

    

  

filter配置如下:

 

     

 

 其调用过程如下图所示:

 

image
          
          

通过上述介绍,可以清楚filter可以在访问jsp或servlet之前和之后做一些事情。其实质是拦截了request和response两个请求,具体操作可以参见上述代码

中的27-31行。filter的优点除了可以解决上述面临的问题外,还有一点是做软件值得借鉴的地方,这便是filter是可“插拔的”,只需要对配置文件进行更改不

需要改动其他代码,便可以决定使用filter与否和一些参数等的设置非常灵活!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值