创建过滤器

1.创建过滤器类,并且实现过滤器接口(Filter)
2.使用@WebFilter(filterName = “loginCheckFilter”,urlPatterns = “/*”),filterName:过滤器名字,urlPatterns :被拦截的路径
3.实现 Filter 的默认方法doFilter

使用过滤器

在项目启动类中添加注解:@ServletComponentScan

最终代码区:

package com.yiwen.reggie.filter;import com.alibaba.fastjson.JSON;
import com.yiwen.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.AntPathMatcher;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 拦截器的使用,拦截所有路径的请求,都需要经过此拦截器*/
@Slf4j
@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")
public class LoginCheckFilter implements Filter {//路径匹配器public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest)servletRequest;HttpServletResponse response = (HttpServletResponse)servletResponse;//获取请求路径String requestURI = request.getRequestURI();log.info("初始拦截请求:{}",request.getRequestURI());//创建需要放行的路径String[] urls = new String[]{"/employee/login","/employee","/employee/out","/employee/page","/backend/**","/front/**"};//判断本次是否需要拦截,里面使用Spring的路径对比器boolean check = check(requestURI, urls);if (check){//放行filterChain.doFilter(request,response);log.info("不需要拦截:{}",requestURI);return;}//如果已经登录则放行if (request.getSession().getAttribute("employee") != null) {//放行filterChain.doFilter(request,response);log.info("用户:{},已登录。",request.getSession().getAttribute("employee"));return;}//如果未登录则返回登录结果,通过输出流向客户端返回数据response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));log.info("未登录拦截路径:{}",request.getRequestURI());return;}/*** 使用Spring的路径匹配器来对比路径是否正确* @param requestUrI* @param urls* @return*/public boolean check(String requestUrI,String[] urls){for (String url : urls) {if (PATH_MATCHER.match(url,requestUrI)) {return true;}}return false;}}

如何使用并且使用过滤器相关推荐

  1. Redis 预防缓存穿透“神器” — 布隆过滤器

    1. 布隆过滤器 1.1 概念 在架构设计时有一种最常见的设计被称为布隆过滤器,它可以有效减少缓存穿透的情况.其主旨是采用一个很长的二进制数组,通过一系列的 Hash 函数来确定该数据是否存在. 布隆 ...

  2. SpringBoot2.3 修改响应头、添加更新token、解决在过滤器中修改失败

    前言 使用Spring Boot开发项目的过程中,难免会遇到向响应头中写入一些信息,例如更新了的token,用户详情等信息.在请求头中添加,请求时就可以通过过滤器,拦截器等验证或者获得请求头传递的信息 ...

  3. [JAVA EE] Filter过滤器

    Filter过滤器 ◼ 过滤器(Filter)可以动态地拦截请求和响应. ◼ 应用场景:过滤敏感词汇.防止SQL注入.设置字符编码.进行URL级 别的权限访问控制.压缩响应信息等. 启动文件DemoA ...

  4. java 过滤器Filter

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  5. java 编码过滤器_Java编码过滤器

    Java编码过滤器: package com.utils; import javax.servlet.*; import javax.servlet.http.*; public class Enco ...

  6. android service intent-filter,如何在permission中加入intent-filter过滤器获取NotificationListenerService权限...

    现在要让我的app获取NotificationListenerService权限,我勾选了BIND_NOTIFICATION_LISTENER_SERVICE权限后,用native.js跳到ACTIO ...

  7. authc过滤器 shiro_shrio 权限管理filterChainDefinitions过滤器配置

    /** * Shiro-1.2.2内置的FilterChain * @see ============================================================= ...

  8. Filter(过滤器)

    一.Filter过滤器(重要) Javaweb中的过滤器可以拦截所有访问web资源的请求或响应操作. 1.Filter快速入门 1.1.步骤: 1. 创建一个类实现Filter接口 2. 重写接口中方 ...

  9. 算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

    算法:详解布隆过滤器的原理.使用场景和注意事项@知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data struc ...

  10. C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率

    布隆过滤器是一种判定元素是否存在于集合中的方法.其基本原理是使用哈希方法将数据映射到一个很长的向量上.在维基百科上,它被称为"空间效率和查询时间都远远超过一般的算法"的方法.由于它 ...

最新文章

  1. 【mathematical statistics】4 hypothesis testing
  2. 从零写一个编译器(十二):代码生成之生成逻辑
  3. 第四章 C++数据类型
  4. Thymeleaf的学习
  5. Mysql DDL与DML
  6. 【React Native 安卓开发】----(View实战之仿携程)【第三篇】
  7. 别学英语了!微软给PPT和Skype新加的这个功能,让你和老外从此交流无障碍
  8. 龙腾世纪:起源–最后的古代墓碑和剑圣盔甲
  9. Win7下安装Ubuntu16.04成双系统
  10. db2 ? 22018
  11. CSDN上一个非常搞笑的帖子内容---一个让我瞠目结舌的电脑高手
  12. linux ps -ef命令输出详解,Linux-ps命令学习
  13. 解压上传zip文件并获取excel表数据
  14. 如何查看大型工程源代码(非常不错)
  15. 中国十大军工集团介绍
  16. python环境-基于go-cqhttp-简易qq聊天机器人
  17. python调用canape_利用CANape进行基于CCP的汽车控制器的匹配标定的设计
  18. 交互式电子技术手册系统软件怎么做装备维修
  19. 生成条形码 code39 和 code 128
  20. 高校竞赛信息管理系统

热门文章

  1. python3计算md5_python 计算文件的md5值实例
  2. 解决微信小程序IOS中使用picker弹出内容和手机软键盘重叠的问题
  3. 活动星投票网络文明公益广告网络评选微信的投票方式线上免费投票
  4. 新数仓系列:开源组件运营(3)
  5. 【C语言】二维数组定义以及引用
  6. 用伪类添加翘边阴影::before和::after
  7. PA1--实现基础设施、表达式求值和监视点
  8. (二)xlwt模块详解--设置列宽、行高
  9. CDH集群执行任务报错:User xxx not found
  10. 旁观OpenGL里的透视投影矩阵