一、首先写配置类
import com.tp.mybatisplusstudy.interceptor.TestInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @ClassName: IntercepterConfig
* @Author: tanp
* @Description: 拦截器配置类
* @Date: 2020/5/12 16:38
*/
@Configuration
public class IntercepterConfig implements WebMvcConfigurer {
@Autowired
TestInterceptor interceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(interceptor).addPathPatterns("/user/**");
}
}
二、拦截器实现类
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @ClassName: TestInterceptor
* @Author: tanp
* @Description: springboot项目添加拦截器测试类
* @Date: 2020/5/12 16:23
*/
@Component
public class TestInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
System.out.println("执行到了afterCompletion方法");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
System.out.println("执行到了postHandle方法");
}
/*
* 返回值:表示是否将当前的请求拦截下来 false:拦截请求,请求别终止。true:请求不被拦截,继续执行
* Object obj:表示被拦的请求的目标对象(controller中方法)
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
System.out.println("执行到了preHandle方法");
System.out.println(obj);
return true;
}
}
三、后台实现controller
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserMapper userMapper;
@Autowired
private IUserService iUserService;
@RequestMapping(value = "/getUsers")
public List<User> getUsers() {
System.out.print("请求次数--");
List<User> users = userMapper.selectList(null);
return users;
}
@RequestMapping(value = "/getUsers23")
public List<User> getUsers2() {
List<User> users = iUserService.list();
return users;
}
}
四、注意点
在拦截器配置类中添加拦截器的路径时,也就是registry.addInterceptor(interceptor).addPathPatterns("/user/**");
给的路径中不应该包含项目名,直接就是controller映射出来的地址,也可直接是某个方法的地址,如
registry.addInterceptor(interceptor).addPathPatterns("/user/getUsers");
加了项目名无法实现拦截
本文详细介绍了如何在SpringBoot项目中配置和使用拦截器,包括创建配置类、实现拦截器类以及在Controller中应用拦截器的具体步骤。通过实例演示了如何拦截/user/**路径下的所有请求。


被折叠的 条评论
为什么被折叠?



