前言👀~
上一章我们介绍了Spring IoC&DI,今天介绍SpringBoot对于统一功能的处理,这期的代码在我的gitee上,链接在这可以拿去试试Nan/Book - 码云 - 开源中国 (gitee.com)
目录
如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞
个人主页:N_0050-CSDN博客
相关专栏:java SE_N_0050的博客-CSDN博客 java数据结构_N_0050的博客-CSDN博客 java EE_N_0050的博客-CSDN博客
什么是拦截器?
拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截用户的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。例如公司的保安拦截不是工作人员的人员如果不是工作人员需要登记后才可放行,也可以想象成打给银行电话办理一些业务的时候,需要先输入手机号啊银行卡啊密码啊选择业务啊校验你的身份,成功才会转到人工服务。它的作用维度是URL
拦截器的基本使⽤:
• 拦截器的使⽤步骤分为两步:
• 1. 定义拦截器,实现HandlerInterceptor接口,重写里面的preHandle和postHandle方法
• 2. 注册配置拦截器,就是把拦截器注册到项目中,也就是使用拦截器。创建一个配置类然后实现WebMvcConfigurer接口重写里面的addInterceptors方法
小结:就是先自定义一个拦截器在方法里写好代码,然后把这个拦截器实现到项目中,例如每个方法执行前先过一遍拦截器的方法。如果没设置拦截路径,拦截器就是在每个方法执行前会先执行一下拦截器里的逻辑
演示如下,下面我访问一个URL在未登录的情况下会强制跳转到登录界面
@Slf4j
//交给Spring进行管理
@Component
public class LoginInterceptor implements HandlerInterceptor {
//目标方法执行前执行 返回true 表示放行继续后续操作 false表示拦截成功
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("登录拦截校验...");
HttpSession session = request.getSession(false);//默认true会创建一个session false不会创建
if (session != null && session.getAttribute(Constants.SESSION_USER_KEY) != null) {
return true;
}
response.setStatus(401);//表示未登录
return false;
}
//目标方法执行后执行 类似业务办理后给工作人员一个评价
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
log.info("目标方法执行后");
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
private static List<String> excludePath = Arrays.asList("/user/login", "/css/**", "/js/**", "/pic/**", "/**/*.html", "/test/t1", "/test/t2");
@Override
public void addInterceptors(InterceptorRegistry registr