preHandle: 预先处理,在目标的controller方法执行之前,进行处理

postHandle: 在目标的controller方法执行之后,到达指定页面之前进行处理

afterCompletion: 在页面渲染之后进行处理

方法:

1.Springboot通过实现HandlerInterceptor接口实现拦截器

2.通过WebMvcConfigurer实现一个配置类,再通过@Configuration 注解注入到容器

3.指定拦截规则

以用户登录为案例,若用户没有登录session里面就没有用户的数据,就会转到首页登录页面

在正确登录之后,就将reglister保存到session中,再次访问页面的时候,登录拦截器就可以找到这个reglister对象,就不需要再次拦截到登录界面了.

package com.zwz.springbootweb.interceptor;import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();Object reglister = session.getAttribute("Reglister");if (reglister != null) {return true;} else {request.setAttribute("msg", "请先登录!");request.getRequestDispatcher("/").forward(request,response);return false;}}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

之后通过实现WebMvcConfigurer接口实现一个配置类,在配置类中注入拦截器,最后再通过 @Configuration 注解注入配置.并且指定拦截的路径和需要放行的路径.

注意:拦截器  /**   会拦截一切资源,包括静态资源,需要将静态资源放行

package com.zwz.springbootweb.config;import com.zwz.springbootweb.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;@Configuration
public class WebConfig implements WebMvcConfigurer{@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/loginjudge","/","/retolo","/static/**");}}

Springboot实现拦截器功能相关推荐

  1. SpringBoot——使用拦截器拦截未登录用户

    前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...

  2. springboot项目拦截器中获取接口返回数据_Spring Boot自定义Annotation实现接口自动幂...

    在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同.按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重 ...

  3. 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法

    [SpringBoot]拦截器使用@Autowired注入接口为null解决方法 参考文章: (1)[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 (2)https: ...

  4. SpringBoot与拦截器

    自定义拦截器 package com.buba.interceptor;import com.buba.pojo.User; import org.springframework.web.servle ...

  5. SpringBoot配置拦截器导致swagger失效

    问题背景: Springboot 启用拦截器后,Swagger无法访问 原因 拦截器拦截了所有的请求,导致swagger也被拦截,当在进行鉴权的的时候,可能需要传入一些特定的参数,或者请求头信息,这样 ...

  6. springboot Interceptor拦截器excludePathPatterns失效

    springboot Interceptor拦截器excludePathPatterns失效 使用jwt和HandlerInterceptorAdapter做登录的拦截放行失效,其实更多时候不是配置文 ...

  7. springboot设置拦截器的方法

    springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...

  8. springcloud springboot 异常拦截器 项目完善03

    springcloud springboot 异常拦截器 项目完善03 > 创建异常拦截器,在controller层没处理的异常抛出时,异常拦截器拦截后输入自定义的报错信息. 新建GlobalE ...

  9. 六十五、SpringBoot配置拦截器拦截静态资源和区域解析器实现登陆功能

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 本次到了SpringBo ...

最新文章

  1. 干货|浅谈强化学习的方法及学习路线
  2. Application Architecture Guide 2.0 - CH 19 - Mobile Applications(5)
  3. Flash Builder4.7极其简单破解方法-三步搞定(亲测)
  4. Dubbo-go 发布 1.5 版,朝云原生迈出关键一步
  5. 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
  6. CodeBlocks报错原因分析:找不到编译器 / th_en_US.idx' not found! 提示
  7. vue移动端弹框组件
  8. 实例37:python
  9. STL学习笔记-multimap的基本使用
  10. android app启动过程
  11. window安装python报错_win10下Python安装pycrypto报错
  12. 20191202_2_识别偷税漏税人
  13. 计算机科学导论佛罗赞第4版,计算机科学导论 原书第4版
  14. Learning Convolutional Neural Networks for Graphs
  15. 做好数据全生命周期管理,实现数据资产化
  16. 记Vivado使用,报错记录本
  17. c实现 图像dither算法_Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结...
  18. html5 制作书架展示 PHP,html5制作转盘的详解及实例
  19. 【自己动手设计一个简单的加密算法Python】
  20. LeetCode 347. 前 K 个高频元素(C++)*

热门文章

  1. 呼叫中心行业市场发展分析
  2. maven离线(offline)构建时无法找到本地依赖 Non-resolvable import POM: Cannot access nexus
  3. 程序员面试阿里、腾讯、京东等大公司,这些套路你知道吗?
  4. 小米组织架构调整成立技术委员会 强化技术引领 增强互联网成色
  5. 基于SpringBoot HII健身房app
  6. ES学习构建EKL海量日志分析平台
  7. 2021年茶艺师(中级)考试及茶艺师(中级)实操考试视频
  8. 第三方开发者服务平台汇总
  9. 先尚传真服务器指示灯显示,【仪表盘指示灯】仪表盘上常见的五种故障指示灯_仪表盘指示灯图解_佰佰安全网...
  10. 程序员通病:小厂薪资低,想跳槽,又担心面试过不了!