- 自定义拦截器
import org.springframework.web.servlet.HandlerInterceptor;
public class DemoInterceptor implements HandlerInterceptor {
/**
* 请求前
* preHandler()方法:该方法会在控制器方法前执行,其返回值表示是否中断后续操作。当
* 其返回值为 true 时,表示继续向下执行;当其返回值为 false 时,
* 会中断后续的所有操作(包括调用下一个拦截器和控制类中的方法执行等)。
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return HandlerInterceptor.super.preHandle(request, response, handler);
}
/**
*postHandle()方法:该方法会在控制器方法调用之后,
* 且解析视图之前执行。可以通过此方法对请求域中的模型和视图做出进一步的修改。
* 这个我也没用过。。。
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
/**
* 请求后
* afterCompletion()方法:该方法会在整个请求完成,
* 即视图渲染结束之后执行。可以通过此方法实现一些资源清理、记录日志信息等工作。
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
- 加入到 MVC 的 拦截器中就可以了
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/**
* 在这一块 InterceptorRegistry 加入自己的拦截器 就行了
* 还可以对这个拦截器指定地址拦截
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new DemoInterceptor()).excludePathPatterns(
"/user/code",
"/user/login"
);
}
}
时间长没用就忘了