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 拦截器工作结果
    地势坤,君子以厚德载物。
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号