zoukankan      html  css  js  c++  java
  • Servlet Filter

    Filter :

        Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。

        过滤链的好处是,执行过程中任何时候都可以打断,只要不执行chain.doFilter()就不会再执行后面的过滤器和请求的内容。

    1、filter的驱动:
    在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中
    <filter>
      <filter-name>helloFilter</filter-name>
      <filter-class>com.jalja.filter.HelloFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>helloFilter</filter-name>
      <!-- 要拦截的资源 -->
      <url-pattern>/freeMark</url-pattern>
    </filter-mapping>

    2、filter接口:
    //destory() 在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
    public void destroy()

    //Filter 链的执行

    //chain.doFilter(request, response);//把请求传给下一个filter,如果该filter是该filter链的最后一个filter,则把请求给目标资源
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
    //类似于servlet的init方法,在创建Filter对象时被调用,只调用一次,对当前的filter进行初始化操作,filter单例
    //FilterConfig 类似于servletConfig 可以获得Filter的初始化参数信息
    public void init(FilterConfig filterConfig)

    3、filter 拦截顺序:
      web.xml中配置多个filter时构成filter链,他们的拦截顺序取决于<filter-mapping>的顺序

    4、filter默认过滤的是 请求资源,如果是 其他方式的请求则过滤器无效 ,如果要使用就要在<filter-mapping>中添加<dispatcher>来指定过滤方式

      <dispatcher>REQUEST</dispatcher>

      <dispatcher>FORWARD</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
      <dispatcher>ERROR</dispatcher>

    每天用心记录一点点。内容也许不重要,但习惯很重要!
  • 相关阅读:
    centos7搭建ELK开源实时日志分析系统
    基于ELK的简单数据分析
    用ELK打造可视化集中式日志
    elk单台环境搭建
    用logstash,elasticSearch,kibana实现数据收集和统计分析工作
    用Kibana和logstash快速搭建实时日志查询、收集与分析系统
    elasticsearch按照配置时遇到的一些坑 [Failed to load settings from [elasticsearch.yml]]
    分布式搜索elasticsearch几个概念解析
    分布式搜索elasticsearch配置文件详解
    CENTOS安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/jalja/p/5403420.html
Copyright © 2011-2022 走看看