1. 程式人生 > 其它 >自定義Filter攔截器

自定義Filter攔截器

通過實現Filter介面,覆蓋doFilter方法決定是否攔截

package com.example.test_demo.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * @program: test_demo
 *
 * @description: filter
 **/
public class SysFilter implements Filter {
    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        ParamServletRequest paramServletRequest = new ParamServletRequest((HttpServletRequest) servletRequest);
        filterChain.doFilter(paramServletRequest, servletResponse);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }
}

自定義攔截方法,實現去資料前後空格等功能

package com.example.test_demo.filter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.util.Map;

/**
 * @program: test_demo
 *
 * @description:
 *
 **/
public class ParamServletRequest extends HttpServletRequestWrapper {
    public ParamServletRequest(HttpServletRequest servletRequest) {
        super(servletRequest);
        Map<String, String[]> parameterMap = servletRequest.getParameterMap();

        for (Map.Entry<String, String[]> stringEntry : parameterMap.entrySet()) {
            System.out.println(stringEntry.getKey()+stringEntry.getValue());
        }
    }

}

將自定義攔截器通過配置FilterRegistrationBean例項進行註冊
建立一個cofiguration類

package com.example.test_demo.filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.DispatcherType;

/**
 * @program: test_demo
 *
 * @description: filter註冊器
 *
 **/
@Configuration
public class FilterRegister {
    @Bean
    public FilterRegistrationBean getFilterRegist(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setDispatcherTypes(DispatcherType.REQUEST);
        bean.setFilter(new SysFilter());//註冊自定義過濾器
        bean.addUrlPatterns("/*");//過濾所有路徑
        bean.setName("sysFilter");//過濾器名稱
        bean.setOrder(6);//優先順序,數字越小,優先順序越高
        return bean;
    }
}