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