美文网首页
十三、 过滤器

十三、 过滤器

作者: 真是个点子王 | 来源:发表于2020-11-12 11:24 被阅读0次

1. 现有问题

  • 以往的Servlet中,存在冗余代码,多个Servlet都要进行编写。

2. 概念

  • 过滤器(Filter)是处于客户端与服务器目标资源之间的一道技术。


3.过滤器作用

  • 执行位于Servlet之前,客户端发送请求时,会先经过Filter,再到达目标Servlet中;响应时,会根据执行流程再次反向执行Filter
  • 可以解决多个Servlet共性代码的冗余问题

4. 编写过滤器

// TargetServlet.class
package com.qf.filter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


@WebServlet(value = "/t")
public class TargetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("--Target--");
    }
}
//MyFilter.class
package com.qf.filter;

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


@WebFilter(value = "/t")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("--MyFilter--");

        filterChain.doFilter(servletRequest,servletResponse);

        System.out.println("--End--");
    }

    @Override
    public void destroy() {

    }
}

  • 上述代码中,MyFilter被部署在了TargetServlet之前实现过滤功能,我们只要是需要看以下返回结果,就能明白他们的执行顺序。

5. 过滤器配置

5.1 注解配置

5.2 xml配置

6. 过滤器链和优先级

6.1 过滤器链

  • 客户端对服务器请求之后,服务器调用Servlet之前会执行一组过滤器,称为一条过滤器链;
  • 每个过滤器实现某些特定的功能,当第一个Filter的doFilter方法被调用时,Web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。
  • 在doFilter()方法中,如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有过滤器,如果有,则调用下一个过滤器,如果没有,则调用目标资源。


6.2 过滤器优先级

  • 在一个Web应用中,可以开发多个Filter,这些Filter组合起来称为一个Filter链。


相关文章

  • 十三、 过滤器

    1. 现有问题 以往的Servlet中,存在冗余代码,多个Servlet都要进行编写。 2. 概念 过滤器(Fil...

  • 跟我学SpringCloud | 第十三篇:Spring Clo

    SpringCloud系列教程 | 第十三篇:Spring Cloud Gateway服务化和过滤器 Spring...

  • 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节点之下,过滤器本质是函数 分为私有过滤器和全局过滤器 ...

网友评论

      本文标题:十三、 过滤器

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