首页 > 编程语言 > 详细

Spring 拦截器

时间:2019-09-25 09:39:23      阅读:88      评论:0      收藏:0      [点我收藏+]

示例

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

技术分享图片技术分享图片

 

Spring 拦截器

原文:https://www.cnblogs.com/KenBaiCaiDeMiao/p/11582347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!