zoukankan      html  css  js  c++  java
  • Spring 拦截器

    示例

    (1)编写拦截器

    package learnspring.learnspring.interceptor;
     
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     * @author 肖政宇
     * @date 2019-09-24 15:13
     * 说明:拦截器
     * 一个简单的拦截器,计算每一次请求的处理时间
     */
    @Component
    public class DemoInterceptor extends HandlerInterceptorAdapter {
     
        /**
         * 在请求发生前执行
         */
        @Override
        public boolean preHandle(HttpServletRequest request,
                                 HttpServletResponse response,
                                 Object object) throws Exception {
            long startTime = System.currentTimeMillis();
            System.out.println("拦截器接收到请求的时间:" + new Long(startTime));
            request.setAttribute("startTime", startTime);
            return true;
        }
     
        /**
         * 在请求发生之后执行
         */
        @Override
        public void postHandle(HttpServletRequest request,
                               HttpServletResponse response,
                               Object object,
                               ModelAndView modelAndView) throws Exception {
            long startTime = (Long) request.getAttribute("startTime");
            request.removeAttribute("startTime");
            long endTime = System.currentTimeMillis();
            System.out.println("本此请求的处理时间为:" + endTime + " - " + startTime + " = " +
                    new Long(endTime - startTime) + "ms");
            request.setAttribute("handlingTime", endTime - startTime);
        }
    }

    (2)在配置类中注册拦截器

    package learnspring.learnspring.interceptor;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.*;
     
    /**
     * @author 肖政宇
     * @date 2019-09-24 15:27
     * 说明:配置
     */
    @Configuration
    @EnableWebMvc
    public class MyMvcConfig implements WebMvcConfigurer {
     
        DemoInterceptor demoInterceptor;
     
        @Autowired
        public void setDemoInterceptor(DemoInterceptor demoInterceptor) {
            this.demoInterceptor = demoInterceptor;
        }
     
        /**
         * 注册拦截器
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(demoInterceptor);
        }
    }

    (3)简单的控制器

    package learnspring.learnspring.interceptor;
     
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    /**
     * @author 肖政宇
     * @date 2019-09-24 15:38
     * 说明:
     */
    @RestController
    @RequestMapping("/test")
    public class TestController {
        @GetMapping("hello")
        public String sayHello() {
            return "Hello";
        }
    }

    (4)测试结果

  • 相关阅读:
    蓝桥杯——一步之遥,扩展gcd的应用
    质数唯一分解定理应用——多个数的最小公约数和最大公倍数
    蓝桥杯训练 ——天平称重
    蓝桥杯 奇怪的捐赠——进制的运用
    Kubernetes-基本概念
    Docker-基本概念
    虚拟化向容器化发展
    Kubernetes-服务连接和暴露(endpoints资源)
    Kubernetes-NodePort
    Kubernetes-Load Balancer
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11582347.html
Copyright © 2011-2022 走看看