javaWeb过滤器--filter-概述

javaWeb过滤器–filter-概述

filter-概述

  • Filter是什么?
    Java Web开发有三大组件:Servlet Filter Listener
  • Filter有什么作用?
    过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
  • 有什么特点?
    通常都是用来拦截request进行处理的
    也可以对返回的response进行拦截处理

img

filter-过滤器的创建

  • Idea 创建 Filter
  • 类比 Servlet
//servlet的创建
@WebServlet
 extends HttpServlet
 doGet/doPost方法

//filter的创建
@WebFilter 
 implements Filter
 doFilter方法
  • 过滤的正确理解
    如果过滤地址是s1,那么只有地址是s1的请求才能被过滤,你访问a.jpg ,s2等等,过滤器都不过滤,不会执行doFilter方法。

##案例代码

Demo01Servlet:

package com.lbl.servlet;

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("/s1")
public class Demo01Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
            System.out.println("doGet方法执行了啦");
            try {
    
    
                Thread.sleep(5000);
            } catch (InterruptedException e) {
    
    
                e.printStackTrace();
            }
    }
}

Demo01Filter:

package com.lbl.filter;

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

@WebFilter("/s1")
public class Demo01Filter implements Filter {
    
    
    public void destroy() {
    
    
    }

    /*

      1:这个方法是你访问我要过滤的资源时,自动执行
      2: FilterChain被称为过滤器链
      3:  chain.doFilter(req, resp);放行
         如果调用:请求放行
         如果不调用,请求不放行

     */
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
    
        System.out.println("过滤器doFilter方法执行了");
        chain.doFilter(req, resp);

        System.out.println("过滤器响应了");
    }

    public void init(FilterConfig config) throws ServletException {
    
    

    }

}

运行效果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108615278