关于Filter(过滤器)的源码翻译(一)

   简要的自己翻译了一下filter的源码注释,希望大神们可以不吝赐教。因为自己感觉有些地方确实不通,不够透彻。这是第一篇比较简单的只翻译了filter包含的三个方法的源码,后续还会写一些相关的源码翻译和自己的理解。例如FilterConfig,ServletRequest ,ServletResponse,FilterChain等,希望和大家共同探讨。


package javax.servlet;



import java.io.IOException;


 
/**

 * 过滤器是一个在请求资源(服务器或者静态资源),或从一个资源返回响应,或者两    者都有的过程中执行过滤任务的对象。 

 *

 * <p>过滤器是在<code>doFilter</code> 方法中执行过滤的.
 * 每个过滤器都有一个FilterConfig(过滤器配置)对象,它可以让过滤器获得初始元素  * 并且获得一个参照关于他可以使用的ServletContext。例如,加载过滤任务所需要的  * 资源。
 * 
 * <p>过滤器在web程序的部署描述符中配置(一般为web.XML)。
 *
 * <p>以下是一些过滤器例子:
 * <ol>
 * <li>Authentication Filters(认证)
 * <li>Logging and Auditing Filters(日志记录和审计)
 * <li>Image conversion Filters(图像转换)
 * <li>Data compression Filters(数据压缩)
 * <li>Encryption Filters(加密)
 * <li>Tokenizing Filters(令牌化)
 * <li>Filters that trigger resource access events(触发资源访问事件的过滤器)
 * <li>XSL/T filters(能改变XML内容)
 * <li>Mime-type chain Filter(MIME类型链)
 * </ol>
 *
 * @since Servlet 2.3
 */


public interface Filter {


    /** 
     * 由Web容器调用,向过滤器指示它正在投入使用。
     *
     * <p>服务容器通过调用init()方法来实例化filter。
     * 只有在init()方法成功执行后,filter才能开始执行过滤工作。
     * 
     * <p>如果init()方法出现以下任何一种情况,web容器都不能将filter布置到服务上。
     * <ol>
     * <li>抛出ServletException异常。
     * <li>在web容器定义的时间内没有响应。
     * </ol>
     */
    public void init(FilterConfig filterConfig) throws ServletException;


    /**
     * 过滤器的<code> doFilter </ code>方法在由于客户端请求在链末端的资源
     * 而每次通过链中传递一个请求/响应对时,被容器所调用。
     * 传递给此方法的FilterChain允许过滤器将请求和响应传递给链中的下一个实体。
     *
     * <p>该方法的典型实现有以下模式:
     * <ol>
     * <li>审查请求
     * <li>可以选择自定义包装的请求对象过滤内容或者头部来进行输入过滤
     * <li>可以选择自定义包装的响应对象过滤内容或者头部来进行输出过滤
     * <ul>
     * <li>可以使用FilterChain对象调用链中的下一个实体
     * <li>或者不将请求/响应对传递给过滤器链中的下一个实体以阻止请求
     * </ul>
     * <li>在调用过滤器链中下一个实体后直接设置响应头。
     * </ol>
     */
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
            throws IOException, ServletException;





    /**
     *由网络容器调用以向过滤器指示它被停用。
     *
     * <p>这个方法在doFilter方法的所有线程结束或者超时以后将会被调用
     * 当web容器调用此方法后,将不能调用过滤器本次实例的doFilter方法。
     *
     * <p>这个方法给过滤器提供了机会以便去清除任何正在被调用的资源(例如,内          * 存,文件句柄,线程等)。
     * 并确保任何持久化状态与内存中的筛选器当前状态同步。
     */
    public void destroy();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigCool叉子

原创不易,给点儿继续的动力吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值