Spring MVC拦截器配置

删除回忆录丶 提交于 2019-12-01 01:56:55

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

 

 

 

 

 

 

 

 

 

 

 


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!