Springboot实现拦截器功能
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实现拦截器功能相关推荐
- SpringBoot——使用拦截器拦截未登录用户
前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...
- springboot项目拦截器中获取接口返回数据_Spring Boot自定义Annotation实现接口自动幂...
在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同.按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重 ...
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 参考文章: (1)[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 (2)https: ...
- SpringBoot与拦截器
自定义拦截器 package com.buba.interceptor;import com.buba.pojo.User; import org.springframework.web.servle ...
- SpringBoot配置拦截器导致swagger失效
问题背景: Springboot 启用拦截器后,Swagger无法访问 原因 拦截器拦截了所有的请求,导致swagger也被拦截,当在进行鉴权的的时候,可能需要传入一些特定的参数,或者请求头信息,这样 ...
- springboot Interceptor拦截器excludePathPatterns失效
springboot Interceptor拦截器excludePathPatterns失效 使用jwt和HandlerInterceptorAdapter做登录的拦截放行失效,其实更多时候不是配置文 ...
- springboot设置拦截器的方法
springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...
- springcloud springboot 异常拦截器 项目完善03
springcloud springboot 异常拦截器 项目完善03 > 创建异常拦截器,在controller层没处理的异常抛出时,异常拦截器拦截后输入自定义的报错信息. 新建GlobalE ...
- 六十五、SpringBoot配置拦截器拦截静态资源和区域解析器实现登陆功能
@Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 本次到了SpringBo ...
最新文章
- 干货|浅谈强化学习的方法及学习路线
- Application Architecture Guide 2.0 - CH 19 - Mobile Applications(5)
- Flash Builder4.7极其简单破解方法-三步搞定(亲测)
- Dubbo-go 发布 1.5 版,朝云原生迈出关键一步
- 神策 FM | 科学创造「高价值」人生,终止“瞎忙”式勤奋
- CodeBlocks报错原因分析:找不到编译器 / th_en_US.idx' not found! 提示
- vue移动端弹框组件
- 实例37:python
- STL学习笔记-multimap的基本使用
- android app启动过程
- window安装python报错_win10下Python安装pycrypto报错
- 20191202_2_识别偷税漏税人
- 计算机科学导论佛罗赞第4版,计算机科学导论 原书第4版
- Learning Convolutional Neural Networks for Graphs
- 做好数据全生命周期管理,实现数据资产化
- 记Vivado使用,报错记录本
- c实现 图像dither算法_Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结...
- html5 制作书架展示 PHP,html5制作转盘的详解及实例
- 【自己动手设计一个简单的加密算法Python】
- LeetCode 347. 前 K 个高频元素(C++)*
热门文章
- 呼叫中心行业市场发展分析
- maven离线(offline)构建时无法找到本地依赖 Non-resolvable import POM: Cannot access nexus
- 程序员面试阿里、腾讯、京东等大公司,这些套路你知道吗?
- 小米组织架构调整成立技术委员会 强化技术引领 增强互联网成色
- 基于SpringBoot HII健身房app
- ES学习构建EKL海量日志分析平台
- 2021年茶艺师(中级)考试及茶艺师(中级)实操考试视频
- 第三方开发者服务平台汇总
- 先尚传真服务器指示灯显示,【仪表盘指示灯】仪表盘上常见的五种故障指示灯_仪表盘指示灯图解_佰佰安全网...
- 程序员通病:小厂薪资低,想跳槽,又担心面试过不了!