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)测试结果

  • 相关阅读:
    Bootstrap+Angularjs自制弹框
    【2019年04月22日】A股最便宜的股票
    沪深300指数的跟踪基金排名
    【2019年04月10日】股票的滚动市盈率PE最低排名
    【2019年04月09日】A股净资产收益率ROE最高排名
    基金 、社保和QFII等机构的重仓股排名评测
    【2019年04月04日】股市指数估值排名
    【2019年04月03日】A股最便宜的股票
    净资产收益率ROE连续3年超过15%的股票排名
    A股滚动净利润增速最高排名
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11582347.html
Copyright © 2011-2022 走看看