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

    Spring MVC拦截器配置

    (1)自定义拦截器

    package learnspringboot.xiao.other;

    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-10-10 11:01
    * 说明:拦截器实例
    * 拦截器能够在处理每一个请求的前后做一些事情。
    * 可以让普通的Bean事项HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义的拦截器。
    * 拦截器需要在配置类中注册。
    */
    public class DemoInterceptor extends HandlerInterceptorAdapter {

    /**
    * 本拦截器实现的功能:计算每一次请求的处理时间
    */

    /**
    * 在控制器处理web请求前执行的工作
    */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    //1、获取接收到请求时的系统时间,即开始处理请求的时间
    long startTime = System.currentTimeMillis();
    //2、将时间保存的request体中
    request.setAttribute("startTime", startTime);
    return super.preHandle(request, response, handler);
    }

    /**
    * 在控制器处理web请求后执行的工作
    */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    //1、从request体中取出之前存进去的“处理本次请求的开始时间”
    long startTime = (Long) request.getAttribute("startTime");
    request.removeAttribute("startTime");
    //2、获取当前系统时间,即处理完当前请求的时间
    long endTime = System.currentTimeMillis();
    //3、计算得出处理本次请求的总时间
    long totalTime = endTime - startTime;

    System.out.println("本次请求的处理时常:" + totalTime);
    request.setAttribute("totalTime", totalTime);
    super.postHandle(request, response, handler, modelAndView);
    }
    }

    (2)注册拦截器

    package learnspringboot.xiao.other;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

    /**
    * @author 肖政宇
    * @date 2019-10-10 11:06
    * 说明:注册拦截器
    */
    @Configuration
    @EnableWebMvc
    public class InterceptorConfig implements WebMvcConfigurer {

    /**
    * 显式声明Bean
    */
    @Bean
    public DemoInterceptor demoInterceptor() {
    return new DemoInterceptor();
    }

    /**
    * 注册拦截器
    */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(demoInterceptor());
    }
    }

    (3)测试

    图1 运行程序

     

    图2 发送请求

     

    图3 拦截器工作结果

     

     


  • 相关阅读:
    MySQL Explain优化
    mysql联合索引
    MySQL索引类型
    php常用的排序算法与二分法查找
    mysql 主从复制(mysql双机热备的实现)
    mysql 主从复制 (2)
    Linux 查看进程之PS命令
    PHP isset 和 array_key_exists 对比
    Linux md5sum 的用法
    Linux Sphinx 安装与使用
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11647078.html
Copyright © 2011-2022 走看看