1. 程式人生 > >SpringBoot配置過濾器、監聽器和攔截器

SpringBoot配置過濾器、監聽器和攔截器

一:配置過濾器

1.建立TestFilter類並實現Filter介面

@WebFilter(filterName="testFilter",urlPatterns="/*")  //@WebFilter是定義過濾器的註解 ,urlPatterns="/*" 定義過濾器過濾的路徑
public class TestFilter implements Filter{

	@Override
	public void destroy() {
		System.out.println("過濾器被銷燬");
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		System.out.println("過濾器被執行");
		
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("過濾器被初始化");
	}

}

2.需要在啟動類中新增@ServletComponentScan註解@WebFilter註解方可生效

@ServletComponentScan(basePackages = {"www.zxf.com.filter","www.zxf.com.listener"})
@EnableAutoConfiguration
public class App {

public static void main(String[] args) {
SpringApplication.run(App.class, args);
}

}

二:配置監聽器

1.建立TestListener類並實現ServletContextListener介面

@WebListener  //將該類定義為一個監聽器
public class TestListener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("監聽器被銷燬");
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("監聽器被建立");
	}

}

2.需要在啟動類中新增@ServletComponentScan註解@WebListener註解方可生效

@ServletComponentScan(basePackages = {"www.zxf.com.filter","www.zxf.com.listener"})
@EnableAutoConfiguration
public class App {

public static void main(String[] args) {
SpringApplication.run(App.class, args);
}

}

三:配置攔截器

1.建立攔截器一

package www.zxf.com.intercepter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class IntercepterTest1 implements HandlerInterceptor{

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("請求執行後1");
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("請求執行後檢視渲染前1");
	}

	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("請求執行之前1");
		return true;
	}

}

2.建立攔截器二

package www.zxf.com.intercepter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class IntercepterTest2 implements HandlerInterceptor{

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("請求執行後2");
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		System.out.println("請求執行後檢視渲染前2");
	}

	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		System.out.println("請求執行之前2");
		return true;
	}

}

3.配置攔截器並將攔截器一和攔截器二加入該配置中

package www.zxf.com.intercepter;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class WebAdepter extends WebMvcConfigurerAdapter{

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new IntercepterTest1()).addPathPatterns("/**");//配置攔截路徑
		registry.addInterceptor(new IntercepterTest2()).addPathPatterns("/**");//配置攔截路徑
		super.addInterceptors(registry);
	}
	
}