1.拦截器添加分两步
- 自定义拦截器,实现
HandlerInterceptor
接口- 自定义类继承
WebMvcConfigurationSupport
类,重写addInterceptors
方法
2.自定义拦截器
自定义拦截器类 MyInterceptor
package com.example.demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* 自定义拦截器
* @author LENOVO
*
*/
public class MyInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("进入拦截器,此处还没有进入controller");
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("进入拦截器,此处已经调用完controller");
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("此处是视图渲染成功后调用,一般用于清理");
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
3.自定义类继承 WebMvcConfigurationSupport
类,重写 addInterceptors
方法
package com.example.demo;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
/**
* 添加自定义拦截器
* @author LENOVO
*
*/
@Configuration
public class MyAppConfig extends WebMvcConfigurationSupport{
@Override
protected void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器并且添加拦截路径
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*");
super.addInterceptors(registry);
}
}
4.结果
完!