filter过滤、servlet过滤

来源:互联网 发布:兄弟打印机软件下载 编辑:程序博客网 时间:2024/05/02 02:36

看配置文件感觉servlet的配置方式跟filter在形式上差不多,他们都可以进行过滤拦截,他俩有啥区别呢?

        首先看他们位置:“filter是servlet中最实用的技术,servlet Api提供了Filter接口;filter可以拦截web的所有资源,包括servlet”,怎么感觉filter隶属于servlet,是servlet的一部分???!!!

        查资料理解后发现filter的确是servlet的一部分:大家都知道所有的request请求都会发送给servlet(httpServletRequest:光从英文名上也能看出request的最终目的是为了发给servlet),但若发个带病毒的request给servlet,或发送一些不适合servlet处理的request请求该怎么办,servlet接还是不接?当然不接,但怎么个不接法?鉴于此servlet就创建了一套不接的机制——filter。过滤掉servlet不想接的东西,或者为了安全等把伪装的request请求形式给转换一下啥的... ...反正filter在request到达servlet之前进行第一步处理;

        (后来... ...,filter从servlet中被分离???)

        

       然后servlet想接的内容就可以到达servlet了,但这个时候又可以进行过滤细分,比如“*.ajax”可以交给a.java处理,“*.do”可以交给b.java处理,其他的交给默认程序处理;


      所以有些知识点就比较容易理解了:

      1. filter的作用是转换request、response的;

      2. filter不能产生request、response,但servlet能;

      3. servlet先于filter被调用,先于filter被销毁;

      4. filter在Servlet容器启动之后即初始化,servlet在Servlet类被调用之后初始化;


       综上, filter过滤跟servlet过滤的意义不一样,比方说:filter过滤“*.do”是为了把“*.do”转换为“*.ajx”然后交给servlet或者筛掉“*.do”不让它到达servlet,而servlet过滤“*.do”的目的是为了把“*.do”交给自己特定的方法处理;

          

       

0 0
原创粉丝点击