首页 > 编程语言 > 详细

Spring MVC拦截器配置

时间:2019-10-10 12:00:40      阅读:73      评论:0      收藏:0      [点我收藏+]

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

 

 

 

 

 

 

 

 

 

 

 


 

Spring MVC拦截器配置

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

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