拦截器

  • 1.编写一个拦截器实现HandlerInterceptor接口
  • 2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)
  • 3.指定拦截规则[如果是拦截所有,静态资源也会被拦截]

1、HandlerInterceptor 接口

/*** 登录检查* 1、配置好拦截器要拦截哪些请求* 2、把这些配置放在容器中*/
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {/*** 目标方法执行之前* @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String requestURI = request.getRequestURI();log.info("preHandle拦截的请求路径是{}",requestURI);//登录检查逻辑HttpSession session = request.getSession();Object loginUser = session.getAttribute("loginUser");if(loginUser != null){//放行return true;}//拦截住。未登录。跳转到登录页request.setAttribute("msg","请先登录");
//        re.sendRedirect("/");request.getRequestDispatcher("/").forward(request,response);return false;}/*** 目标方法执行完成以后* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {log.info("postHandle执行{}",modelAndView);}/*** 页面渲染以后* @param request* @param response* @param handler* @param ex* @throws Exception*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {log.info("afterCompletion执行异常{}",ex);}
}

2、配置拦截器

/*** 1、编写一个拦截器实现HandlerInterceptor接口* 2、拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)* 3、指定拦截规则【如果是拦截所有,静态资源也会被拦截】*/
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")  //所有请求都被拦截包括静态资源.excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**"); //放行的请求}
}

test

  • 执行顺序

[SpringBoot2]拦截器相关推荐

  1. Springboot2拦截器与文件上传

    拦截器-登录检查与静态资源放行 1.编写一个拦截器实现HandlerInterceptor接口 2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors()) 3. ...

  2. SpringBoot2.0 基础案例(05):多个拦截器配置和使用场景

    一.拦截器简介 1.拦截器定义 拦截器,请求的接口被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. 拦截器主要用来按照指定规则拒绝请求. 2.拦截器中应用 Token令牌 ...

  3. springboot2.0版本后配置拦截器会导致静态资源被拦截

    转载:https://blog.csdn.net/wangfuxu14/article/details/80670648 springboot2.0版本后配置拦截器会导致静态资源被拦截 解决办法: 分 ...

  4. springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能

    在spring-boot-2.2.5中对MVC自动配置类进行的更改,之前的WebMvcConfigurerAdapter类声明为过时的,现在进行自定义扩展需要实现WebMvcConfigurer类重写 ...

  5. SpringBoot2.x 中配置拦截器

    拦截器 拦截器介绍 拦截器开发 开发拦截器 MyInterceptor 开发控制器 HelloController 配置拦截器 InterceptorConfig 运行 SpringBoot 知识点目 ...

  6. SpringBoot2整合Mybatis拦截器,拦截mapper接口的某个方法

    需求: 在执行某个动态sql时,where 子句,希望通过用户进行自定义查询条件,比如用户可以传入 "id > 100011 and name = '张三'" 的多条件表达式 ...

  7. springboot2.0+拦截器后 , 静态资源被拦截问题

    1.先弄懂第一件事: springboot默认的静态资源访问路径是:META-INF/resources > resources > static > public (访问优先级也是 ...

  8. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  9. springboot _配置过滤器、拦截器、使用原生servlet

    配置过滤器.拦截器.使用原生servlet 过滤器和拦截器的根本区别 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器. 拦截器属于S ...

最新文章

  1. 在python中使用关键字define定义函数_python自定义函数def的应用详解
  2. Missing artifact com.sun:tools:jar:1.5.0
  3. mongodb 学习笔记 2 --- 修改器
  4. hadoop的idea连接配置_idea远程连接hadoop(macOS)
  5. rizomuv缩放排布_RizomUV
  6. C++根据输入日期YYYY-MM-DD判断是否星期几
  7. alternatives命令用法
  8. java并发之Future与Callable使用
  9. 拓端tecdat|R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究分析案例
  10. 在android系统中制作系统签名jks
  11. Linux递归统计当前目录下普通文件的数量
  12. 播放最近的人人影视mp4视频出现了所有文字显示不正常的现象,及其解决方法
  13. 2020德勤面试开始了吗_刚刚去德勤面试,我只说了三个字就被录取了!
  14. COPYPASTE: AN AUGMENTATION METHOD FOR SPEECH EMOTION RECOGNITION -论文阅读
  15. 武汉农商行 商转公所需材料
  16. 基因编辑最新研究进展(2022年4月)
  17. 大屏antdesign走马灯轮播加图形渲染
  18. MySQL命令简单应用
  19. java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  20. 做自媒体没素材怎么办?

热门文章

  1. Android TextView设置ClickableSpan 点击结尾空白位置也响应点击的问题
  2. Android之让代码跑在主线程(无context上下文)的封装
  3. Bit Manipulation —— 位运算
  4. Android之AIDL使用详解
  5. 栈和队列之仅用递归函数和栈操作逆序一个栈
  6. 一组动图看懂3D打印原理
  7. 如果这个世界都不按套路出牌将会变成怎么样。。。 | 今日最佳
  8. 怎样借助Python爬虫给宝宝起个好名字
  9. 建模分析师与算法工程师的主要区别
  10. 通过简单的Word Count讲解MapReduce原理以及Java实现