一、作用

  1. 好文章参考:https://www.cnblogs.com/panxuejun/p/7715917.html
  2. 对请求进行预处理和后处理;
  3. 使用场景:
    • 登录验证,判断用户是否登录
    • 权限验证,判断用户是否有权限访问资源,如校验token
    • 日志记录,记录请求操作日志(用户ip,访问时间等),以便统计请求访问量
    • 处理cookie、本地化、国际化、主题等
    • 性能监控,监控请求处理时长等。

二、实现

  1. 继承HandlerInterceptorAdapter抽象类或者实现HandlerInterceptor接口;
  2. 示例:
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方法用来处理异步请求。

三、注册

  • 通过@Component 或者 @Configuration将Bean注册到spring容器中
@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"
);
}
 }

最新文章

  1. Linux安全基础:find命令的使用
  2. C#的winform编程入门简单介绍
  3. 计算alert弹出框的次数
  4. hanio 塔和递规的理解。
  5. 实现支持在Mac OS的最小大化的过渡效果
  6. 运行时环境(The Runtime Environment)
  7. Ibatis collect select用法详解
  8. CentOs7相对于CentOs6的常用命令变化
  9. ReactNative布局样式总结
  10. k64 datasheet学习笔记25--Multipurpose Clock Generator (MCG)
  11. Hive数仓之快速入门(二)
  12. Kotlin入门(27)文件读写操作
  13. [转]阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
  14. 读懂SAP Leonardo物联网平台
  15. MySQL中字符串和数字拼接
  16. object对象转string字符串
  17. shell日常实战练习——通过监视用户登陆找到入侵者
  18. DP整理(未完待续)
  19. maven中net.sf.json报错的解决方法
  20. java环境变量配置(win7)

热门文章

  1. MVCC详解
  2. CF1106A Lunar New Year and Cross Counting 题解
  3. vscode配置指南,美化技巧
  4. mongodb 连接方式之mongo-shell
  5. MySQL查询列必须和group by字段一致吗?
  6. MyBatis学习(一)基本配置与使用
  7. 【LeetCode】1. Two Sum 两数之和
  8. GCD(hdu1695)
  9. WPF自定义界面WindowChrome
  10. Categorical Reparameterization with Gumbel-Softmax