Spring MVC的拦截器配置

一 点睛

拦截器(Intercept)实现对每一个请求处理前后相关的业务处理。

可以通过让普通Bean实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器。

通过重写WebMvcConfigurerAdapter的addInterceptors方法来注册自定义拦截器。

二 项目介绍

开发一个简单的拦截器,完成每一次请求处理的时间。

三 实战

1 编写拦截器

package com.wisely.highlight_springmvc4.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//继承HandlerInterceptorAdapter类来实现自定义拦截器
public class DemoInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, //在请求发生前执行
            HttpServletResponse response, Object handler) throws Exception {
        long startTime = System.currentTimeMillis();
        request.setAttribute("startTime", startTime);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, //在请求发生后执行
            HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        long startTime = (Long) request.getAttribute("startTime");
        request.removeAttribute("startTime");
        long endTime = System.currentTimeMillis();
        System.out.println("本次请求处理时间为:" + new Long(endTime - startTime)+"ms");
        request.setAttribute("handlingTime", endTime - startTime);
    }

}

2 配置拦截器

     @Bean
     //配置拦截器的Bean
     public DemoInterceptor demoInterceptor() {
          return new DemoInterceptor();
     }
     @Override
     public void addInterceptors(InterceptorRegistry registry) {// 注册拦截器
          registry.addInterceptor(demoInterceptor());
     }

四 运行

在浏览器访问 http://localhost:8080/highlight_springmvc4/index

控制台打印如下:

本次请求处理时间为:1ms

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/81710114