欢迎您光临本小站。希望您在这里可以找到自己想要的信息。。。

Java Web过滤器Filter(五)

Java Web water 2136℃ 0评论

Filter概述

Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改。Filter提出滤镜链的概念,一个FilterChain包括多外Filter。客户端请求request在抵达Servlet之前会经过FilterChain里的所有Filter,服务器响应response在从Servlet抵达客户端浏览器之前会经过FilterChain里的所有Filter。Filter处理过程如下:

filter1

Filter像是客户端浏览器与服务器端之间的一层滤网。

 

Filter接口

一个Filter必须实现javax.servlet.Filter接口。

public class MyFilter implements Filter {

public void init(FilterConfig config) throws ServletException{}

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExcepton, ServletException{

System.out.println(“request被处理之前…”);

chain.doFilter(request, response);

System.out.println(“request被处理之后,response抵达客户端浏览器之前……”)

}

 

public void destroy() {}

}

注:chain.doFilter(request, response)将request递交给FilterChain中的下一个Filter,如果所有Filter都走完了则交给Servlet。

Filter配置

filter2

 

<dispatcher>配置到达servlet的方式,有4种取值:REQUEST、FORWORD、INCLUDE、ERROR。如果没配置默认为REQUEST。

 

Filter经典案例

Filter可以处理如:权限验证、日志记录、数据压缩、数据加密、格式转换、图像处理等工作。

  1. 防盗链Filter(其它网端访问本站图片,将会显示错误图片)
  2. 字符编码Filte(这个只处理POST提交请求的编码)

对于GET请求还需要修改Tomcat的/conf/server.xml

添加URIEncoding=”UTF-8”

  1. 日志记录Filter(日志可拆卸)
  2. 异常捕捉异常Filter

如果在chain.doFilter(request, response)上加上try…catch语句,就能捕捉Servlet中抛出的可预料的与不可预料的异常,然后根据不同异常进行不同异常处理。

  1. 权限验证Filter

Java Web程序一般使用session或者cookie来记录用户是否登录,以及该用户的权限。

  1. 内容替换Filter
  2. GZIP压缩Filter
  3. 图像水印Filter
  4. 缓存Filter
  • XSLT转换Filter

 

 

Filter是一种很有弹性的机制,功能很强大,而且与servlet、JSP等没有任何耦合,可自由拆卸。Filter是现在流行的AOP(Aspect Orainted Programming,面向切面编程)思想的一种体现。

转载请注明:学时网 » Java Web过滤器Filter(五)

喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!