public class InterceptorDemo extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { StringBuffer requestURL = httpServletRequest.getRequestURL(); System.out.println("前置拦截器1 preHandle: 请求的uri为:"+requestURL.toString()); return true; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("拦截器1 postHandle: "); } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("拦截器1 afterCompletion: "); } }
四大方法:
preHandle是在请求controllor前调用,返回true才向后调用其它方法,
postHandler在调用Controller方法之后、视图渲染之前调用,
afterCompletion是在渲染视图完成之后使用,
afterConcurrentHandlingStarted方法用来处理异步请求。
@Configuration public class InterceptorConfig implements WebMvcConfigurer{
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册TestInterceptor拦截器 InterceptorRegistration registration = registry.addInterceptor(new InterceptorDemo()); registration.addPathPatterns("/**"); //所有路径都被拦截 registration.excludePathPatterns( //添加不拦截路径 "你的登陆路径", //登录 "/**/*.html", //html静态资源 "/**/*.js", //js静态资源 "/**/*.css", //css静态资源 "/**/*.woff", "/**/*.ttf" ); }
}
原文:https://www.cnblogs.com/flame540/p/13973247.html