spring boot项目自定义拦截器(Inteceptor)

客官,有过滤器有拦截器,要哪一款?

这两种有啥区别?

在这里插入图片描述
参考资料
拦截器和过滤器的区别

怎么搞一个拦截器呢?

1、首先,写一个拦截器

public class UrlInterceptor extends HandlerInterceptorAdapter {
    /**
     * 在请求处理之前进行调用(Controller方法调用之前)
     * 基于URL实现的拦截器
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String path = request.getServletPath();
        if (。。。) {//如果这个地址是这样这样
            //那么你就这样这样
            return true;
        } else {//如果这个地址是那样那样
        	//你先这样这样
            // 这写你拦截需要干的事儿,比如取缓存,SESSION,权限判断等
            System.out.println("==>");
            //然后再这样这样
            response.sendRedirect(别的地址);
            //最后再这样这样
            return false;//跳转要返回false
        }
        //明白了没有?
    }
}

2、spring boot项目注册这个拦截器

@Configuration
public class WebConfigurer implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(UrlInterceptor()).addPathPatterns("/**");
    }

    @Bean
    public UrlInterceptor UrlInterceptor() {
        return new UrlInterceptor();
    }
}

@Configuration这个注解会自动帮我们注册。

搞掂晒。

发布了1105 篇原创文章 · 获赞 337 · 访问量 338万+

猜你喜欢

转载自blog.csdn.net/leftfist/article/details/103480262