您的位置:首页 > 其它

Servlet过滤器浅析之基础用法

2011-11-23 17:02 267 查看
Filter(过滤器)是servlet2.3以上新增加的功能,过滤器的使用充分的体现了代码开源性,使servlet的功能更加强大,编写代码的效率大大提高

过滤器不止可以在request客户端发送请求时体现其功能,也可以在服务器回应请求信息时体现功能。

Filter(过滤器)的作用范围:

1、 在servlet被调用之前截获request

2、 在servlet被调用之前对截获信息进行检查

3、 调用servlet时,根据filter中的信息对需要进行修改的request头信息和request数据进行相应的修改

4、 调用servlet时,根据filter中的信息对需要进行修改的response有信息和response数据进行相应的修改

5、 在servlet被调用之后

使用过滤器时配置文件的基本配置:

配置文件就是web项目的web.xml文件,添加过滤器并实现的基础配置

<!-- 定义过滤器 -->

<filter>

<filter-name>过滤器标示名</filter-name>

<filter-class>过滤器实现类全限定名</filter-class>

<!-- 配置初始化参数 -->

<init-param>

<param-name>初始化参数名</param-name>

<param-value>初始化参数值</param-value>

</init-param>

</filter>

<!-- 过滤器的映射配置 -->

<filter-mapping>

<filter-name>过滤器标示名</filter-name>

<url-pattern>过滤器的url匹配模式</url-pattern>

</filter-mapping>

Filter(过滤器)实现的方法:
一个过滤器必须要实现javax.servlet.Filter接口中的destory()销毁,doFilter()处理业务,init()初始化实例三个方法

public void init(FilterConfig config):Filter实例化后进行回调的方法,一般在服务器开始的时候执行

public void doFilter(ServletRequest request,ServletResponseresponse,FilterChain chain):处理业务时的过滤方法。在这个方法里需要注意:要显示页面信息必须通过chain对象调用chain.doFilter(request,response)方法,否则页面信息不显示

FilterChain是过滤链中的过滤器,作用是将资源信息传递到下一个过滤器,如果是过滤链中的最后一个过滤器就对过滤后信息进行整理,运行servlet请求或回应。换言之。就是将通过过滤器的信息进行最终要执行操作的管理。拿做菜为例吧,过滤器就好比是一个多层滤网,要过滤的信息就是食材,FilterChain就好比是一个操作员。食材准备好了,当过滤完第一层滤网后进行第二层过滤,操作员将通过第一个过滤层的食材拿到第二层过滤网上去;依次类推,一直到最后一层滤网过滤完后,操作员将过滤完毕的食材交给厨师,进行最初要进行的处理,煎炒烹炸都可以。但是操作员就是一个中间的传递者,不对食材进行任何操作。chain.doFilter(request,response)方法就是这样,只是传递,但不对过滤信息做任何改变。当然这个例子有些不妥,与做菜不同的是,过滤器看到要进行过滤的信息不符合哪项要求会对其进行相应的操作

public void destroy():Filter执行完毕后释放信息时要回调的方法,一般在关闭服务器时进行调用,将资源信息释放
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: