拦截器是属于springmvc体系的,只能拦截controller的请求
-
拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行
自定义拦截器
1.配置HandlerInterceptor
实现HandlerInterceptor接口,重写两个方法,preHandle和afterCompletion
preHandle 在请求处理之前进行调用(Controller方法调用之前)
afterCompletion 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
xxx......
//放行
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
x......
}
}
2.注册拦截器
实现WebMvcConfigurer接口
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
//.addPathPatterns("/**") // 需要拦截的路径(/** 拦截所有路径)
.excludePathPatterns("/employee/login","/backend/**","/front/**");//放行静态资源和登陆资源;
}
}