Jsp之五 过滤器与监听器

时间:2023-02-13 10:48:38

什么是Filter?依据字面上的意思是过滤器。很多时候会利用它,例如:在线游戏、web聊天室或E-mail等等,可以利用Filter来过滤不雅字句或者拒绝对象的信息或信件。当用户的请求到达指定的页面之前,可以借助过滤器(Filter)来改变这些请求内容;同样地,当执行结果要响应道用户之前,若先经过过滤器,就可以修改输出的内容。

Filter的运行方式

 

Filter的运行方式如同一层接一层,一直从最外面的的filter做到最里面的原始网页,然后再把响应一层一层传送出去,最后产生回传结果给用户。但是Filter也不是只能乖乖照这个顺序传送,首先Filter必须使用doFilter()才可以继续传到下一个Filter,因此可以选择某种条件下让Filter不要调用doFiler(),而通过其他方法转向到其他页面。Filter主要可以通过RequestDispatcher的forward()、include()或HttpServletResponse的sendRedirect()、sendError()等方法来转向到其他网页的动作。

我们可以在web.xml中使用<dispatcher>元素,用来设定Filter所对应的请求方式。他有四种设定,分别是request、forward、include、error。图【5-1】描述了Filter的运行方式。

1、Request

当用户直接对网页做出请求的动作时,才会调用此Filter。

2、Forward

当用户的请求是通过RequestDispatcher的forward()方法时,才调用此Filter其他请求不会调用此filter

3、include

当用户的请求时通过RequestDispatcher的include()方法时,才会调用此Filter其他请求不会调用此filter。

4、Error

当用户的请求时通过错误机制处理的时候,才会调用此filter,同样,其他请求不会调用此filter。

下面简单看一下Filter在web.xml中的配置情况

<filter>

       <filter-name>test</filter-name>

       <filter-class>com.filterbo.FilterTest</filter-class>

 

    </filter>

 

    <filter-mapping>

       <filter-name>test</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

Jsp之五 过滤器与监听器+