c语言编程笔录

首页 >   > 笔记大全

笔记大全

怎么使用SpringBoot配置一个拦截器

更新时间:2023-12-28

在SpringBoot中配置一个拦截器需要以下步骤:

1.编写拦截器类

首先我们需要编写一个拦截器类,这个类需要实现HandlerInterceptor接口,实现preHandle、postHandle和afterCompletion三个方法,代码如下:

        public class MyInterceptor implements HandlerInterceptor {
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                    throws Exception {
                //在请求处理之前进行调用(Controller方法调用之前)
                System.out.println("Interception: Before Handler method called...");
                return true;
            }

            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                    ModelAndView modelAndView) throws Exception {
                //请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
                System.out.println("Interception: Post Handler method called...");
            }

            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                    Exception ex) throws Exception {
                //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于清理资源)
                System.out.println("Interception: After completion called...");
            }
        }
    

2.配置拦截器

接下来我们需要在SpringBoot的启动类中配置拦截器,代码如下:

        @SpringBootApplication
        public class DemoApplication extends WebMvcConfigurerAdapter{
            public static void main(String[] args) {
                SpringApplication.run(DemoApplication.class, args);
            }

            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/login/**");
                super.addInterceptors(registry);
            }
        }
    
在addInterceptors方法中,我们可以添加自定义的拦截器。其中addPathPatterns方法添加需要拦截的路径,excludePathPatterns方法添加不需要拦截的路径。

3.测试拦截器

程序员需要测试拦截器是否生效,可以在Controller中编写一个测试方法,代码如下:

        @RestController
        @RequestMapping("/test")
        public class TestController {

            @RequestMapping("/interceptor")
            public String testInterceptor(){
                System.out.println("Controller method called...");
                return "Interceptor called";
            }
        }
    
在浏览器中输入http://localhost:8080/test/interceptor,在控制台上可以看到以下输出: Interception: Before Handler method called... Controller method called... Interception: Post Handler method called... Interception: After completion called...

4.总结

通过以上步骤,我们就可以在SpringBoot中成功地配置一个拦截器。我们只需要在拦截器类中实现 HandlerInterceptor接口,并在SpringBoot的启动类上添加addInterceptors方法来添加拦截器即可实现拦截功能。可以通过在控制台输出调试信息来判断是否成功地拦截了请求。