拦截器详解及功能实现

一,拦截器是什么

拦截器也是spring框架的核心功能,主要用于拦截用户的请求,也要根据业务执行预先设定的代码。也就是定义逻辑,允许有些请求在响应完了就执行,有些直接不执行拦截住。

也就是比如强制登陆这里,你可以设置如果有登陆信息就放行,没有就拦截住。

也就是这一套:

二,拦截器的基本使用

拦截器的使用步骤分两步执行:

1,定义拦截器

2,注册配置拦截器 

2.1自定义拦截器

@Slf4j
@Component
public class LoginInterceptor implements HandlerInterceptor {
 
 @Override
 public boolean preHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler) throws Exception {
 log.info("LoginInterceptor ⽬标⽅法执⾏前执⾏..");
 return true;
 }
 @Override
 public void postHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler, ModelAndView modelAndView) throws Exception {
 log.info("LoginInterceptor ⽬标⽅法执⾏后执⾏");
 }
 @Override
 public void afterCompletion(HttpServletRequest request, 
HttpServletResponse response, Object handler, Exception ex) throws Exception {
 log.info("LoginInterceptor 视图渲染完毕后执⾏,最后执⾏");
 }
}

 preHandle()方法:在目标执行前执行,如果返回true,则继续执行,如果返回false,则中断执行。

postHandle()方法:目标方法执行后执行。

2.2注册配置拦截器 

@Configuration
public class WebConfig implements WebMvcConfigurer {
 //⾃定义的拦截器对象 
 @Autowired
 private LoginInterceptor loginInterceptor;
 @Override
 public void addInterceptors(InterceptorRegistry registry) {
 //注册⾃定义拦截器对象 
 registry.addInterceptor(loginInterceptor)
 .addPathPatterns("/**");//设置拦截器拦截的请求路径( /** 表⽰拦截所有请求)
 .excludePathPatterns("/user/login"); 
 }
}

这边说一下拦截器的路径配置,也就是我们使用注册配置拦截器的时候,通过addPathPatterns方法指定要拦截那些那些请求,excludePathPatterns方法指定那些请求不拦截。

2.3拦截路径

除了上述的拦截路径之外,还有这些常见的拦截路径:

三,拦截器执行流程

一般正常的调用顺序也就是用户->控制器层->服务层->数据持久层-> 数据库:

但加入拦截器之后,就会在用户和后端程序这边多一道工序:

也就是上面说的,请求之后执行方法,如果返回true,则继续执行,返回false,则直接停止。

当全部执行完了之后,在回来一次,执行在程序结束执行的方法,最终给浏览器响应。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值