• 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 拦截器工作结果

     

     


  • 相关阅读:
    python2代码改成python3踩过的坑
    Mac下为什么有的文件名后带一个* 星号?
    Mac 的 Vim 中 delete 键失效的原因和解决方案(转)
    使用pandas处理大型CSV文件(转)
    Java基础——02
    javaee相关基础
    Cookie&Session笔记
    EL&JSTL笔记------jsp
    JavaWeb基础
    Java基础——01
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11647078.html
Copyright © 2020-2023  润新知