写一个拦截器实现HandlerInterceptor接口
- preHandle Controller方法执行前调用
- postHandle Controller方法执行后,并且页面渲染之前调用
- afterCompletion 页面渲染之后调用,一般用于清理操作
package vip.fkandy;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LogHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("-----------preHandle-------------" + handler.getClass());
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("-----------postHandle-------------");
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("-----------afterCompletion-------------");
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
2.写一个类实现WebMvcConfigurer接口,重写addInterceptors方法(将1的拦截器加入汲取)并将这个类加入到Spring容器
package vip.fkandy;
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 WebConfiguration implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogHandlerInterceptor());
}
}