javaWeb filter--filter-overview

javaWeb filter-filter-overview

filter-overview

  • What is Filter?
    Java web development has three major components: Servlet Filter Listener
  • What is the role of Filter?
    Filters actually intercept web resources, do some processing, and then pass them to the next filter or servlet for processing
  • What are the characteristics? It
    is usually used to intercept the request for processing, and
    it can also intercept the returned response.

img

filter- filter creation

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

//filter的创建
@WebFilter 
 implements Filter
 doFilter方法
  • Correct understanding of
    filtering If the filtering address is s1, then only the request whose address is s1 can be filtered. If you visit a.jpg, s2, etc., the filter will not filter and the doFilter method will not be executed.

##Case code

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 {
    
    

    }

}

running result:

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_37924905/article/details/108615278