天天看点

Servlet过滤器(Filter)

过滤器在web开发过程中至关重要,可以减少我们的代码量,在访问某些路径之前做一些处理,如果使用了过滤器,那么过滤器会在servlet之前执行,我们可以控制其是否继续向下执行。

要想创建过滤器,我们需要实现<code>javax.servlet.filter</code>接口,该接口提供了三个方法:

返回值

方法名

说明

public abstract void

init(javax.servlet.filterconfig arg0)

初始化时执行

dofilter(javax.servlet.servletrequest arg0, javax.servlet.servletresponse arg1, javax.servlet.filterchain arg2)

执行过滤

destroy()

销毁时执行

我们在之前的博客中有写过这样一句代码<code>request.setcharacterencoding("utf-8");</code>,作用是设置请求的字符编码为utf-8,用于处理中文乱码,如果我们在每一个servlet里面都写这样一段话就会造成代码冗余,所以我们就可以在使用过滤器来处理。

这样我们就编写好了一个基本的字符过滤器,我们需要特别注意<code>chain.dofilter(req, res);</code>,这句代码用于让过滤器继续向下执行,如果配置了多个过滤器,将控制权传递给下一个过滤器,直至servlet,如果不写该代码,则请求不再继续向下执行。最后,要想让过滤器生效,我们还需要在<code>web.xml</code>中进行配置

至此,我们的过滤器就生效了。设置字符编码是过滤器常用的功能,我们利用过滤器还可以做身份验证、拦截等功能,各位可以自己尝试一下。