SpringBoot配置過濾器、監聽器和攔截器
阿新 • • 發佈:2018-12-30
一:配置過濾器
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);
}
}