spring boot实现过滤器和拦截器demo
发布时间 - 2026-01-10 23:15:03 点击率:次整理文档,搜刮出一个spring boot实现过滤器和拦截器demo ,稍微整理精简一下做下分享。

拦截器定义:
@WebServlet
public class ActionInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// System.out.println(">>>MyInterceptor1>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");
// 获取系统时间
Calendar ca = Calendar.getInstance();
int hour = ca.get(Calendar.HOUR_OF_DAY);
// 设置限制运行时间 0-4点
if (hour < 4) {
return true;
}
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// System.out.println(">>>MyInterceptor1>>>>>>>请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// System.out.println(">>>MyInterceptor1>>>>>>>在整个请求结束之后被调用,也就是在DispatcherServlet
// 渲染了对应的视图之后执行(主要是用于进行资源清理工作)");
}
}
拦截器使用: 关于注解 我使用的是@Component 其实也可能声明成配置
@Component
public class ApplicationConfig {extends WebMvcConfigurerAdapter
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(new ActionInterceptor()).addPathPatterns("/service/extract/json/**");
super.addInterceptors(registry);
}
}
过滤器:
定义:
public class ActionFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 获取系统时间
Calendar ca = Calendar.getInstance();
int hour = ca.get(Calendar.HOUR_OF_DAY);
// 设置限制运行时间 0-4点
if (hour < 4) {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setCharacterEncoding("UTF-8");
httpResponse.setContentType("application/json; charset=utf-8");
// 消息
Map<String, Object> messageMap = new HashMap<>();
messageMap.put("status", "1");
messageMap.put("message", "此接口可以请求时间为:0-4点");
ObjectMapper objectMapper=new ObjectMapper();
String writeValueAsString = objectMapper.writeValueAsString(messageMap);
response.getWriter().write(writeValueAsString);
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
}
}
使用:
@Component
public class ApplicationConfig {
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
ActionFilter actionFilter = new ActionFilter();
registrationBean.setFilter(actionFilter);
List<String> urlPatterns = new ArrayList<String>();
urlPatterns.add("/service/extract/json/*");
registrationBean.setUrlPatterns(urlPatterns);
return registrationBean;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# spring
# boot
# 过滤器
# springboot
# 拦截器
# springboot配置过滤器
# SpringBoot 过滤器、拦截器、监听器对比及使用场景分析
# 浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的
# Spring Boot拦截器和过滤器实例解析
# SpringBoot实现拦截器、过滤器、监听器过程解析
# spring boot设置过滤器、监听器及拦截器的方法
# 详谈springboot过滤器和拦截器的实现及区别
# Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
# Spring Boot项目实战之拦截器与过滤器
# SpringBoot定义过滤器、监听器、拦截器的方法
# Spring拦截器和过滤器的区别在哪?
# 的是
# 是在
# 也就
# 多个
# 时间为
# 大家多多
# 结束之后
# 主要是
# 文档
# 但是在
# 在整个
# getInstance
# ca
# lt
# HOUR_OF_DAY
# hour
# int
# gt
# println
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何使用withoutEvents方法临时禁用模型事件
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel怎么使用artisan命令缓存配置和视图
Android实现代码画虚线边框背景效果
制作公司内部网站有哪些,内网如何建网站?
使用C语言编写圣诞表白程序
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
,网页ppt怎么弄成自己的ppt?
Swift中switch语句区间和元组模式匹配
制作旅游网站html,怎样注册旅游网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
canvas 画布在主流浏览器中的尺寸限制详细介绍
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Laravel如何实现事件和监听器?(Event & Listener实战)
香港服务器如何优化才能显著提升网站加载速度?
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何生成腾讯云建站专用兑换码?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
什么是javascript作用域_全局和局部作用域有什么区别?
如何在万网ECS上快速搭建专属网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
JS去除重复并统计数量的实现方法
韩国服务器如何优化跨境访问实现高效连接?
利用python获取某年中每个月的第一天和最后一天
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel如何记录自定义日志?(Log频道配置)
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
JS弹性运动实现方法分析
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何快速搭建高效服务器建站系统?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Laravel如何实现一对一模型关联?(Eloquent示例)
JS经典正则表达式笔试题汇总
利用JavaScript实现拖拽改变元素大小
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Bootstrap CSS布局之列表
Python3.6正式版新特性预览
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何在七牛云存储上搭建网站并设置自定义域名?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup

