概述:
Spring Web 中的拦截器(Interceptor)基于回调机制,可以在目标方法执行之前,
先进行业务检测,满足条件则放行,不满足条件则进行拦截,拦截器原理分析如下图所示:
拦截器定义
通过拦截器拦截对 Spring Web Handler 进行时间访问拦截,其关键代码定义如下
package com.cy.pj.common.web;
/**
* Spring MVC 中拦截器
* @author Administrator
*/
public class TimeAccessInterceptor
implements HandlerInterceptor {
/**
* preHandle 在控制层目标方法执行之前执行
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//testRequestInfo(request,handler);
LocalTime now=LocalTime.now();//JDK8 中的时间对象
int hour=now.getHour();//获取当前时间对应小时
//System.out.println("hour="+hour);
log.info("hour {}",hour);
if(hour<=6||hour>=22)
throw new RuntimeException("请在 6~10 点进行访问");
return true;
}
}
拦截器配置
定义配置类,实现对拦截器的注册,关键代码如下
package com.cy.pj.sys.web.config;
@Configuration
public class SpringWebConfig implements WebMvcConfigurer{//web.xml
//配置 spring mvc 拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TimeAccessInterceptor())
.addPathPatterns("/notice/**");
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。