过滤器在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>中进行配置
至此,我们的过滤器就生效了。设置字符编码是过滤器常用的功能,我们利用过滤器还可以做身份验证、拦截等功能,各位可以自己尝试一下。