java过滤器的两种加载方式

一、第一种

1.代码

@WebFilter(filterName="LoginCheckFilter",urlPatterns="*")
public class LoginCheckFilter implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("filter");
		HttpServletRequest httpRequest = (HttpServletRequest)request;
		HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setCharacterEncoding("UTF-8");    
        httpResponse.setContentType("application/json; charset=utf-8"); 
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization");
        httpResponse.setHeader("Access-Control-Expose-Headers", "*");
		chain.doFilter(httpRequest, httpResponse);
	}
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}
}

2.加载方式(启动类上面加一个注解@ServletComponentScan)

@SpringBootApplication
@ComponentScan(basePackages = {"com.thread.threadtest.*"})
@ServletComponentScan
@EnableAsync
public class ThreadtestApplication {
    public static void main(String[] args) {
        SpringApplication.run(ThreadtestApplication.class, args);
    }
}

3.启动之后,访问任何一个后端接口都会走这个过滤器的,然后会把我们在过滤器写的那句话输出。

二、第二种方式

1.代码

public class LoginCheckFilter2 implements Filter {
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
	}
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("filter 22222");
		chain.doFilter(request, response);
	}
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}
}

2.通过一个配置类进行加载

@Configuration
public class FilterConfig {
    @Bean
    public FilterRegistrationBean filterRegistration() {
        FilterRegistrationBean reg = new FilterRegistrationBean();
        reg.setFilter(new LoginCheckFilter2());
        reg.addUrlPatterns("*");
        return reg;
    }
}

3.同样能达到上面的效果

三、结束

Always  keep  the  faith!!!

发布了122 篇原创文章 · 获赞 64 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/chenmingxu438521/article/details/104032433