spring boot(19)-拦截器

【JavaEE】SpringBoot 拦截器详解 (统⼀功能处理) 阅读详情

spring拦截器是aop的一种实现,主要拦截对动态资源的后台请求,也就是拦截对控制层的请求,主要用于判断用户是否有权限请求后台。

动态资源和静态资源

拦截器不会拦截静态资源,如spring boot的默认静态目录resources/static,请求其目录下的html,js,图片等都不会被拦截。因为我们的业务机密数据都在后台,而前端的静态资源可以分离出来放在静态服务器以缓解后台服务器的压力,前后端分离的原因还有很多,本篇不讨论这些。


声明拦截器

public class MyInterceptor implements HandlerInterceptor {
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException{
		//如果session参数不为空,说明已经登录,拥有权限,返回true继续访问。
		if(request.getSession().getAttribute("session参数")!=null){
			return true;
		}
		//如果session参数为空,说明没有登录,返回false,可配置重定向跳转到登录页面
		response.sendRedirect("/login.html");
		return false;
	}
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView){
		System.out.println("在请求不报异常,顺利完成后执行");
	}
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
		System.out.println("无论请求是否异常,最后都会执行。用于清理资源,关闭连接等");
	}
}
只需要实现HandlerInterceptor接口即可,三个方法中只有preHandle方法有返回值,通常就是在这个方法中检查用户的session,判断其是否有权限

配置拦截器

@SpringBootConfiguration
public class Mvc extends WebMvcConfigurerAdapter {
    public void addInterceptors(InterceptorRegistry registry) {
        //在系统中添加 拦截器
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/error");
    }
}	
addPathPatterns:添加拦截规则,/**表示所有的请求url,包括子路径。
excludePathPatterns: 排除拦截规则,/error是spring boot中的默认处理异常的url,所以排除掉,不拦截它。
继承WebMvcConfigurerAdapter说明这是一个spring mvc配置类,重写addInterceptors方法就可以实现拦截器的配置。可以查看WebMvcConfigurerAdapter源码,在这里重写其他方法可以实现其他的mvc相关配置

拦截器和过滤器

有不少人喜欢把拦截器和过滤器拿来比较,上一篇我讲了过滤器,也解释了先有servlet,然后才是spring mvc。同理,首先会执行过滤器,然后才是拦截器。过滤器属于servlet技术,所以可以过滤servlet和spring mvc的请求。而拦截器属于spring,所以只能拦截spring mvc,无法拦截servlet,具体原因我在上一篇结尾已经讲过。至于他们的功能有什么区别,哪个更好,并没有必要纠结。如果项目用了spring,拦截器可以和spring更好的融合,可以自动识别spring boot静态资源。如果项目没有用spring只用了servlet,就肯定用过滤器
如何用Python爬取中国土地市场网2000-2023年土地出让数据(含经纬度) 本文详细介绍了如何使用Python爬取中国土地市场网2000-2023年的土地出让数据(含经纬度),提供了一套高效的技术方案。通过应对动态加载的反爬机制、优化地理编码数据存储和设计异常处理流程,帮助开发者建立自动化数据采集管道。方案已在商业地产分析项目中验证,可稳定采集超过50万条土地交易记录。 阅读详情

相关推荐

datax web升级springboot3 jdk17

datax web但GitHub上还是springboot2,没有升级过,最近扫漏洞发现spring-core漏洞必须升级到6.x才能解决,这时不得不将springboot升级到3.x,随之而来是jdk、mybatis-plus等等的升级,调整了几天才没问题,痛苦的开发人生~~以上,有疑问欢迎留言。

liyinglong1023的博客 975

【电商项目实战】拦截器(详细篇)

在Spring MVC中拦截请求是通过处理器拦截器HandlerInterceptor来实现的,它拦截的目标是请求的地址。在Spring MVC中定义一个拦截器,需要实现HandlerInterceptor接口。

知足上进,不负野心。 5039

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 274

关于spring mvc 的 addPathPatterns 拦截配置常见问题

关于spring mvc 的 addPathPatterns 拦截配置常见问题

艾利克斯冰的博客 5334

Cadence PSpice 仿真0:绘制电路图方法图文教程

在使用PSpice进行电路的仿真时,首先需要使用带有PSpice模型的元器件来绘制电路图,本文简单介绍进行电路图绘制是常用的几种需要掌握的方法,以满足PSpice仿真绘制简单电路图所用。

fydar的博客 4708

【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部

本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~ 文章目录本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~一、项目展示二、项目资源共享1:训练图片:香烟图片+吸烟手势+烟雾三、

cv君的博客 13万+

SpringBoot---配置拦截器

一.步骤总结 1.新建拦截器类 注意: 不要忘记类上注解@Component 2配置拦截器 注意: 类上有注解@Configuration。此类相当于SpringMVC配置文件。 addPathPattern(): 拦截哪些URL。 /** 拦截全部 excludePathPatterns(): 不拦截哪些URL。当和addPathPattern()冲突时, excludePathPatterns()生效。 @Configuration public class MyConfig implements W

Apple_Andy的博客 1872

激光雷达点云异常现象详解:鬼影、高反膨胀与拖点

现象核心外观主要成因核心硬件对策核心算法对策鬼影位置错误,出现"复制"的物体镜面反射/光学元件间杂散光物理光阑、抗反射涂层多帧时序一致性检验、反射率逻辑判断膨胀尺寸变大,轮廓呈毛刺状信号饱和、像素/通道串扰可变增益控制、随机编码序列强度阈值滤波、几何轮廓拟合(剪裁)拖点边缘粘连,出现"阶梯"或"连线"光斑跨立边缘、双回波融合小光斑光学设计、多回波支持邻域深度突变检测、波形脉宽分析这些异常现象是当前激光雷达感知中的核心难点,通常需要硬件物理特性优化与上层感知算法。

Fun_LiDAR的博客 307

SpringBoot-12-拦截器

拦截器(Interceptor)是SpringMVC的核心功能之一,是利用Spring的AOP的面向切面编程的思想,可以很方便的实现对登录权限控制、日志打印等功能。

老姚 1124

Easy系列PLC远程IO模块的安装配置和地址访问(EtherCAT总线)

EtherCAT分布式时钟DC(SOEM源码解析)EtherCAT分布式时钟DC(SOEM源码解析)_soem dc同步-优快云博客文章浏览阅读1.2k次。分布式时钟(DC,Dsitributed Clock)可以使所有 EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。_soem dc同步1200PLC连接分布式IO组态编程应用(ES200SP固件版本不同解决方法)

RXXW_Dor的博客 178

Taro React组件使用(5) —— RuiPasswordInput 密码输入框显示隐藏和清空

初始化时,需要将传入的 value 赋值给当前组件的 value, 不能直接修改 props 的 value;在组件内输出组件内的变量时,最好先判断输出函数是否定义,再输出,否则很容易引起报错。

止于至善 892

Spring Boot接收参数的19种方式

可以通过实现来自定义参数解析逻辑。

2509_94201146的博客 758

FPGA开发中的操作系统

在FPGA开发中,操作系统起着关键的作用,它负责任务管理、资源管理、中断处理和设备驱动程序等功能。在实际的FPGA开发中,可以选择使用现有的操作系统,如MicroC/OS-II、FreeRTOS等,或者根据具体需求自行设计和开发操作系统。在FPGA(可编程逻辑门阵列)开发中,操作系统扮演着关键的角色,为硬件设计师提供了一种有效的方式来管理资源、调度任务并实现系统级功能。本文将介绍FPGA开发中的操作系统概念,并提供一个简单的示例代码来说明如何在FPGA平台上实现一个基本的操作系统。

CqpFsharp的博客 1163
上一篇: spring boot(18)-servlet、filter、listener
下一篇: spring boot(20)-开发工具devtools
free_java
博客等级 码龄10年 664粉丝 131原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值