import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import java.io.IOException;
@Configuration
@Order(1)
public class FilterTest implements Filter {
public FilterTest(){
System.out.println("-----------FilterTest1构造器---------");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("------------FilterTest1--init-----------");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("------------FilterTest1--doFilter-----------");
}
@Override
public void destroy() {
System.out.println("------------FilterTest1--destroy-----------");
}
}
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import java.io.IOException;
@Configuration
@Order(2)
public class FilterTest2 implements Filter {
public FilterTest2(){
System.out.println("-----------FilterTest2构造器---------");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("------------FilterTest2--init-----------");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("------------FilterTest2--doFilter-----------");
}
@Override
public void destroy() {
System.out.println("------------FilterTest2--destroy-----------");
}
}
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class AspectTest{
public AspectTest(){
System.out.println("---------AspectTest构造器----------");
}
/**
* 定义一个方法,用于声明切入点表达式,方法中一般不需要添加其他代码
* 使用@Pointcut声明切入点表达式
* 后面的通知直接使用方法名来引用当前的切点表达式;如果是其他类使用,加上包名即可
*/
@Pointcut("execution(public * com.sdhs.finance.emarket.provider..*Controller.*(..))")
public void pointcut() {
}
@Before(value = "pointcut()")
public void aroundMethod(JoinPoint joinPoint) {
System.out.println("---------AspectTest--before----------");
}
}
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InterceptorTest implements HandlerInterceptor {
public InterceptorTest() {
System.out.println("------InterceptorTest 构造器------");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("------InterceptorTest----preHandle----");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("------InterceptorTest----postHandle----");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("------InterceptorTest----afterCompletion----");
}
}
// ==================================================
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 跨域
* @author: louxw
* @date: 2019-03-11 15:29
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
// #添加token拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器,配置拦截地址
registry.addInterceptor(new InterceptorTest()).addPathPatterns("/**");
}
}
// 启动阶段
-----------FilterTest1构造器---------
-----------FilterTest2构造器---------
------------FilterTest1--init-----------
------------FilterTest2--init-----------
---------AspectTest构造器----------
------InterceptorTest 构造器------
// 请求阶段
------InterceptorTest----preHandle----
---------AspectTest--before----------
------InterceptorTest----postHandle----
------InterceptorTest----afterCompletion----
------------FilterTest2--doFilter-----------
------------FilterTest1--doFilter-----------
// 停止项目
------------FilterTest1--destroy-----------
------------FilterTest2--destroy-----------
SpringBoot过滤器(Filter)、切面(Aspect)、拦截器(interceptor)
原文:https://www.cnblogs.com/yanyaqiblog/p/14007761.html