• Filter的例子


    一、概念:

          Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

    Java Web 之过滤器Filter详解

    二、Filter简介

            Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。

    三、快速入门

    1、新建一个类,实现Filter接口

    2、实现doFilter()方法,打印一句话,来证明能够进行拦截

    3、在web.xml中进行配置(参照Servlet配置)

    4、访问一个页面,看看能不能拦截

    [java] view plain copy
     
     

    package com.test.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;

    public class Demo1Filter implements Filter {

    private FilterConfig filterConfig;



    public void doFilter(ServletRequest request, ServletResponse response,

    FilterChain chain) throws IOException, ServletException {

    System.out.println("Demo1过滤前");

    System.out.println(filterConfig.getInitParameter("param1"));

    chain.doFilter(request, response);//放行。让其走到下个链或目标资源中

    System.out.println("Demo1过滤后");

    }



    public void init(FilterConfig filterConfig) throws ServletException {

    System.out.println("初始化了");

    this.filterConfig = filterConfig;

    }



    public void destroy() {

    System.out.println("销毁了");

    }

    }


    在web.xml中进行配置

    [html] view plain copy
     
     

    <filter>
    <filter-name>Demo1Filter</filter-name>
    <filter-class>com.itheima.filter.Demo1Filter</filter-class>
    <init-param>
    <param-name>param1</param-name>
    <param-value>value在这里呢</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Demo1Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher> <!-- 没有配置dispatcher就是默认request方式的 -->
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>ERROR</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

  • 相关阅读:
    安卓开发_浅谈TimePicker(时间选择器)
    eclipse显示代码行数
    Java数据解析---JSON
    Java数据解析---PULL
    Java数据解析---SAX
    统计机器学习(目录)
    FP Tree算法原理总结
    梯度下降(Gradient Descent)小结
    用scikit-learn和pandas学习线性回归
    用scikit-learn学习BIRCH聚类
  • 原文地址:https://www.cnblogs.com/yc123456/p/8650224.html
Copyright © 2020-2023  润新知