过滤器

一 概念
1.Filter也称之为过滤器,它 是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html。

  1. 流程
  • 用户访问服务器
  • 过滤器对servlet请求进行拦截
  • 先进入过滤器,过滤器进行处理
  • 过滤器处理完后,放行,请求达到Servlet/JSP
  • Servlet处理
  • Servlet处理完后,再回到过滤器,最后再由tomcat服务器反馈给相应用户

二 Filter相关API
1 interface Filter

  • interface Filter 过滤器核心接口
  • void init 初始化方法,在服务器启动是执行
  • void doFilter 过滤器拦截的业务处理方法
  • void destroy 销毁过滤器实例时候调用

2 interface FilterConfig

  • Enumeration getInitParameterNames() 获取多有名称
  • String getInitParameter(java.lang.String name)根据名称获取相关配置

3 interface FilterChain 过滤器链参数;一个个过滤器形成一个执行链;

  • void doFilter(ServletRequest request, ServletResponse response) ;执行下一个过滤器或放行

三 拦截配置

  • /* 表示拦截所有的请求

      hello_filter2
      /*
  
  • 默认拦截的类型:(直接访问或者重定向)
REQUEST
  • 拦截转发
 FORWARD
  • 拦截包含的页面(RequestDispatcher.include(/page.jsp); 对page.jsp也执行拦截)
INCLUDE
  • 拦截声明式异常信息:
    ERROR

四 测试
1 .xml配置




  Archetype Created Web Application
  
    hello_Filter
    utils.HelloFilter
  
  
    hello_Filter
    
    /*
  

2 过滤器

package utils;

import javax.servlet.*;
import java.io.IOException;

/**
 * Created by pc on 2017/9/11.
 */
public class HelloFilter implements Filter {
    public HelloFilter(){
        System.out.println("1.创建过滤器实例");
    }
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2.正在执行初始化方法");
    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("3.执行过滤器业务处理方法");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("5.servlet处理完成回到过滤器");
    }

    public void destroy() {
        System.out.println("6.结束过滤器");
    }
}

3 Servlet

package utils;

import javax.servlet.*;
import java.io.IOException;

/**
 * Created by pc on 2017/9/11.
 */
public class HelloFilter implements Filter {
    public HelloFilter(){
        System.out.println("1.创建过滤器实例");
    }
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2.正在执行初始化方法");
    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("3.执行过滤器业务处理方法");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("5.servlet处理完成回到过滤器");
    }

    public void destroy() {
        System.out.println("6.结束过滤器");
    }
}

  • 服务器启动时
过滤器_第1张图片
服务器启动时
  • 访问servlet时
过滤器_第2张图片
访问servlet
  • 服务器结束时


    过滤器_第3张图片
    服务器结束时

你可能感兴趣的:(过滤器)