码迷,mamicode.com
首页 > 其他好文 > 详细

Filter简介

时间:2015-06-10 12:26:59      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:java

一、简介
        Filter也称为过滤器,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现权限访问控制、过滤敏感词汇、压缩响应信息,配置日志等一些功能    
        Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。

二、使用流程
    1、新建一个类,实现Filter接口
    2、实现doFilter()方法
    3、在web.xml中进行配置
三、实践应用(JSP访问servlet时,统一设置字符集)
    1)新建一个类,实现Filter接口,并实现doFilter()方法
/**
 * 统一设置字符集
 */</span>
public class CharsetEncodingFilter implements Filter {
    private String encoding;
    
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        //System.out.println("CharsetEncodingFilter_____begin———————");
        // 设置字符集</span>
        request.setCharacterEncoding(encoding);
        
        //继续执行</span>
        chain.doFilter(request, response);
        //System.out.println("CharsetEncodingFilter______end——————");
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        encoding=filterConfig.getInitParameter("encoding");
    }
}  

2)配置xml文件
    <filter>
         <!-- 配置实现Filter的类 --></span>

         <filter-name>CharsetEncodingFilter</filter-name>
         <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
           <!-- 设置初始化参数 --> </span>          
         <init-param>
             <param-name>encoding</param-name>
             <param-value>GBK</param-value>
         </init-param>
     </filter>
     <filter-mapping>
          <!-- 设置要拦截的url --></span>           
         <filter-name>CharsetEncodingFilter</filter-name>
         <url-pattern>*.jsp</url-pattern>
     </filter-mapping>
 
四、总结
    综上:filter其实就是一个拦截器,比如说在上述程序中我设置拦截的对象是*.jsp,当我用jsp网页进行提交时,通过filter,我可以将其进行拦截,先去执行我要执行的代码,执行完了之后,在继续返回到拦截位置继续执行你自己要执行的程序。假如用html网页进行提交时则不会触发此拦截器。
    所以说使用Filter是非常方便的,最简单的一点可以实现代码的复用,除此之外还有好多其他的好处,在此就不一一介绍了。

Filter简介

标签:java

原文地址:http://blog.csdn.net/u010927139/article/details/46438821

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!