Servlet有一个很有意思也很有用的功能,就是Filter。 所谓Filter,就是在用户请求到达 Servlet 之前、或者 Servlet 执行之后, 执行的一段小程序,这段程序可以对用户请求做预处理, 或者对Servlet返回的结果进行一些公用处理。
Filter可以在请求到达 Servlet 之前执行, 甚至即使请求一个静态页面或图片等,Filter也会被优先执行。 这样我们可以通过Filter对应用程序内的所有对象(包括Java程序和静态内容)进行预处理。 (这个功能恐怕PHP程序就无法做到了。)
Filter通常可用于以下几种情况:
•认证
•记录访问日志
•加密解密
•字符编码转换
•数据压缩
如上面最常用的“认证”,可以在Filter中书写认证代码, 这样不仅省却了在Servlet中认证的麻烦,而且还能控制网站中静态内容的访问。
Filter是个接口,位于 javax.servlet.Filter。它与其他接口的关系如下:
复制代码 代码如下:
void init(FilterConfig filterConfig) throws ServletException
复制代码 代码如下:
void destroy()
复制代码 代码如下:
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
新闻热点
疑难解答