过滤器

作者: 常威爆打来福 | 来源:发表于2017-09-11 20:56 被阅读0次

一 概念
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) ;执行下一个过滤器或放行

三 拦截配置

  • /* 表示拦截所有的请求
<filter-mapping>
      <filter-name>hello_filter2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  • 默认拦截的类型:(直接访问或者重定向)
<dispatcher>REQUEST</dispatcher>
  • 拦截转发
 <dispatcher>FORWARD</dispatcher>
  • 拦截包含的页面(RequestDispatcher.include(/page.jsp); 对page.jsp也执行拦截)
<dispatcher>INCLUDE</dispatcher>
  • 拦截声明式异常信息:
    <dispatcher>ERROR</dispatcher>

四 测试
1 .xml配置

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <filter>
    <filter-name>hello_Filter</filter-name>
    <filter-class>utils.HelloFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>hello_Filter</filter-name>
    <!--拦截所有资源-->
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

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.结束过滤器");
    }
}

  • 服务器启动时
服务器启动时
  • 访问servlet时
访问servlet
  • 服务器结束时


    服务器结束时

相关文章

  • VUE过滤器和计算属性

    过滤器主要分为全局过滤器和局部过滤器。 全局过滤器如下: 局部过滤器如下: 计算属性如下: 过滤器中获取日期: 计...

  • 自定义过滤器的封装

    封装自定义过滤器 引入过滤器 添加+注册过滤器 使用过滤器

  • vue的过滤器及计算属性

    1,过滤器:让要显示在页面上的内容进行重新筛选2,过滤器分为全局过滤器和局部过滤器全局过滤器: 局部过滤器: 3,...

  • 2018-09-18 vue初学六(过滤器:filter(fil

    1.1过滤器 过滤器分为两种:1、全局过滤器:filter2、局部过滤器:filters 1.2过滤器 (当前时间...

  • 过滤器

    ...过滤器分为全局过滤器和局部过滤器全局过滤器的格式:html:{{数据,全局过滤器的名字}}//解析数据js:...

  • 六、过滤器的使用 ------ 2020-05-07

    1、过滤器的作用: 2、全局过滤器 3、局部过滤器 4、过滤器的使用

  • 过滤器和计算属性

    1、过滤器 过滤器指让要显示在页面上的内容进行重新筛选。 过滤器分为两种:全局过滤器、局部过滤器。 2、全局过滤器...

  • Vue的节点

    过滤器Filters 过滤器函数,必须定义在filters节点之下,过滤器本质是函数 分为私有过滤器和全局过滤器 ...

  • Vue进阶(1)

    一.过滤器 过滤器分为局部过滤器和全局过滤器 1.局部过滤器 格式 2.全局过滤器 格式 练习 1.当数字为小于1...

  • 不锈钢锥形过滤器@管道锥形过滤器@冲孔进水口过滤器

    不锈钢锥形过滤器@管道锥形过滤器@冲孔进水口过滤器 产品介绍:临时过滤器又称锥型过滤器,属于管道粗过滤器系列最简单...

网友评论

    本文标题:过滤器

    本文链接:https://www.haomeiwen.com/subject/pedfsxtx.html