过滤器入门

import com.sun.net.httpserver.HttpExchange;

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

@WebFilter(value="/*", dispatcherTypes = {
    
    DispatcherType.FORWARD, DispatcherType.REQUEST, DispatcherType.ERROR})
public class FilterDemo implements Filter {
    
    

    /*在服务器启动时, 会创建Filter对象并执行init方法, 只有这么执行一次*/
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
    

    }

    /*在浏览器每一次请求被拦截的资源是, 执行doFilter方法, 一次请求就访问一次*/
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
    

        System.out.println("访问1");
        System.out.println("访问2");
        /*放行代码*/
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("回应2");
        System.out.println("回应1");
        /*访问1
        访问2
        回应2
        回应1

        由实验可以看出
        放行之后的代码也是由上到下顺序执行的*/
    }

    /*在服务器正常关闭时才会执行, 也就这么一次*/
    @Override
    public void destroy() {
    
    

    }

    /*Filter细节
    * web.xml配置
    * 过滤器执行流程
    *
    * 3.过滤器的拦截配置
    *   也就是拦截的方式(资源被访问的方式)
    *   使用注解
    *       设置dispatcherTypes属性
    *           FORWARD
    *           ASYNC
    *           REQUEST
    *           INCLUDE: 包含访问资源
    *           ERROR: 错误跳转资源
    *
    *
    *
    * 过滤器的生命周期
    * 过滤器链
    * */
}

おすすめ

転載: blog.csdn.net/weixin_45032905/article/details/121856176