zoukankan      html  css  js  c++  java
  • JavaEE 第四周

    Java中的Filter过滤器

    参考:https://www.cnblogs.com/coderland/p/5902878.html&https://www.cnblogs.com/lichmama/p/7063587.html

    一. 什么是Filter?

           Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

    二. 如何利用Filter实现拦截功能?

           Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法。

    三. Filter使用案例  

    编写Filter实现获取Response的内容捕获

    package com.lichmama.webdemo.filter;

    import java.io.IOException;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletResponse;

    import com.lichmama.webdemo.PrintWriterWrapper;
    import com.lichmama.webdemo.ResponseWrapper;

    public class TestFilter implements Filter {

    @Override
    public void init(FilterConfig filterconfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain)
    throws IOException, ServletException {
    ResponseWrapper responsewrapper = new ResponseWrapper((HttpServletResponse) servletresponse);
    filterchain.doFilter(servletrequest, responsewrapper);
    PrintWriterWrapper writerWrapper = (PrintWriterWrapper) responsewrapper.getWriter();
    // TODO retrieve content from PrintWriterWrapper
    String content = writerWrapper.getContent();
    }

    @Override
    public void destroy() {
    }

    }

           

  • 相关阅读:
    Python之路【第十九篇】:前端CSS
    大数据之路【第十五篇】:数据挖掘--推荐算法
    大数据之路【第十四篇】:数据挖掘--推荐算法(Mahout工具)
    Python之路【第十八篇】:前端HTML
    大数据之路【第十三篇】:数据挖掘---中文分词
    大数据之路【第十二篇】:数据挖掘--NLP文本相似度
    Python之路【第十七篇】:Python并发编程|协程
    Python之路【第十六篇】:Python并发编程|进程、线程
    大数据之路【第十篇】:kafka消息系统
    Python之路【第十五篇】开发FTP多线程程序
  • 原文地址:https://www.cnblogs.com/Z--Y/p/8698327.html
Copyright © 2011-2022 走看看