本文主要介绍在SpringBoot中如何使用拦截器
如有需要,可以参考
如有帮助,不忘 点赞 ❥
简单两步学会使用
1)首先创建一个类 WebConfig 实现 WebMvcConfigurer 这个接口
@Configuration //表明为配置类
public class WebConfig implements WebMvcConfigurer {
@Autowired
private SessionInterceptor sessionInterceptor;
/**实现addInterceptors这个方法*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(sessionInterceptor).addPathPatterns("/**");
}
}
2)创建一个自己的 Interceptor 实现 HandlerInterceptor 接口
实现其中的三个方法
- preHandle:
拦截器处理之前进行的方法 - postHandle
拦截器处理的时候进行的方法 - afterCompletion
拦截器处理之后进行的方法
- 然后我们要在什么时候处理 , 处理什么 , 只需要在对应的时间段中写就好了
- 然后在WebConfig 中加载一下
示例:
@Service
public class SessionInterceptor implements HandlerInterceptor {
@Autowired
private UserMapper userMapper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length != 0)
for (Cookie cookie : cookies) {
if ("token".equals(cookie.getName())) {
String token = cookie.getValue();
User user = userMapper.findByToken(token);
if (user != null) {
//当获取到用户后存入session, session相当于是一个用户登记表
//前段通过查询session, 来判断用户是否登录
request.getSession().setAttribute("user", user);
}
break;
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}