zoukankan      html  css  js  c++  java
  • spring boot使用拦截器

    1.编写一个拦截器

    首先,我们先编写一个拦截器,和spring mvc方式一样。实现HandlerInterceptor类,代码如下

    package com.example.demo.interceptor;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 拦截器类
     */
    public class LoginInterceptor implements HandlerInterceptor {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("已经进去了登陆拦截器...");
            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 {
    
        }
    }

    我们简单实现了一个登陆拦截器,里面内容十分简单,在进入处理类前,打印一句话,preHandle()方法返回true表示放行,继续往下走,返回false直接结束。

    2.编写一个配置类加载拦截器

    还需要编写一个配置类,对拦截器进行加载,是拦截器功能生效,我们可以继承WebMvcConfigurerAdapter类,但是我看这个类已经过时,所以我们直接实现类WebMvcConfigurer。

    package com.example.demo.config;
    
    import com.example.demo.interceptor.LoginInterceptor;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * 配置类
     */
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
    
            //需要拦截的路径
            String[] addPathPatterns = {
                    "/boot/**"
            };
            //不拦截路径
            String[] excludePathPatterns = {
                    "/boot/hello"
            };
    
            //注册登录拦截器
            InterceptorRegistration interceptorRegistration = registry.addInterceptor(new LoginInterceptor());
            interceptorRegistration.addPathPatterns(addPathPatterns);//添加拦截路径
            interceptorRegistration.excludePathPatterns(excludePathPatterns);//添加不拦截路径
        }
    }

    我们实现的addInterceptors()方法,通过名字可以发现其意思就是将拦截器注册进去。我们需要将此类添加注解@Configuration,就是表示此类是一个配置类,让spring boot能够扫描到此类。里面具体操作就是将拦截器注册进去,然后将需要拦截的路径和不需要拦截的路径明确出来。最后我们看下效果。

    我们对/boot/**也就是此种形式的路径都增加了拦截,但是其中除了/boot/hello此路径。所以当我们访问http://127.0.0.1:8088/demo/boot/hello时,后台没有任何日志打印。当我们访问http://127.0.0.1:8088/demo/boot/getStudent此路径时,后台打印出了日志。

  • 相关阅读:
    浅谈HTTP协议(下)
    HTML5 十大新特性(四)——Canvas绘图
    FPGA 机器学习之BP神经网络1
    FPGA模式识别之亮点,光点检测
    FPGA模式识别之数字检测
    FPGA大数据之我认为的明天
    FPGA 机器学习之BP神经网络2
    FPGA片外存储器之DDR2控制器2
    FPGA图像处理之边缘检测,中值滤波,图像均衡1。
    FPGA,verilog程序技巧之状态机与稳定性,高速
  • 原文地址:https://www.cnblogs.com/wanghq1994/p/12132066.html
Copyright © 2011-2022 走看看