当前位置: 首页 > news >正文

过滤器的应用-Filter

过滤器

1.工作原理

在这里插入图片描述

2.创建Filter

2.1通过注解的方式实现

//创建一个类,实现Filter接口
@WebFilter(urlPatterns = "/myfilter") //urlPatterns表示需要拦截的路径
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("---------您已进入过滤器----------");filterChain.doFilter(servletRequest,servletResponse);}
}
//启动类上定义一个过滤器扫描器
@SpringBootApplication
@ServletComponentScan(basePackages = "com.liuhaiyang.springboot.filter")  //filter类的地址
public class SpringbootTest14Application {public static void main(String[] args) {SpringApplication.run(SpringbootTest14Application.class, args);}

2.2 springboot的配置类实现

//写一个过滤器,不使用注解
public class MyFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("---------您已进入过滤器222----------");filterChain.doFilter(servletRequest,servletResponse);}
}
//定义一个配置类,用于设定filter
@Configuration 
public class FilterConfig {@Beanpublic FilterRegistrationBean myFilterRegistrationBean(){FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(new MyFilter());//构造函数中传入的是自定义的filter对象//添加过滤路径filterRegistrationBean.addUrlPatterns("/user/*");//拦截路径return filterRegistrationBean;}

如果想要实现重定向可以这么做

@Slf4j
@WebFilter(filterName = "first" , urlPatterns = "/*")
@Order(1)
public class Filter implements javax.servlet.Filter{@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("---------您已进入过滤器---------");HttpServletRequest request= (HttpServletRequest) servletRequest;HttpServletResponse response= (HttpServletResponse) servletResponse;String url = request.getRequestURI();if(url.contains("login")){filterChain.doFilter(servletRequest,servletResponse);log.info("放行!!!");}else{//过滤器触发,进行重定向跳转,跳转到对应的控制器String destination = "/user/error"; // 跳转目标RequestDispatcher dispatcher = request.getRequestDispatcher(destination);dispatcher.forward(request, response);}}
}```
http://www.lryc.cn/news/153488.html

相关文章:

  • leetcode236. 二叉树的最近公共祖先(java)
  • spacy安装旧版本en_core_web_sm的解决方案
  • Qt +VTK+Cmake 编译和环境配置(第一篇 采坑)
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南宁师范大学图书馆
  • C++/C# : C#和C++的不同
  • PCL-直通滤波器原理及实验
  • 数学建模:相关性分析
  • thinkPHP项目搭建
  • C++中几种处理函数返回值的方式
  • 跟我学c++中级篇——c++中的Abominable Function Types
  • 计算机毕设之基于python+django+mysql的影片数据爬取与数据分析(包含源码+文档+部署教程)
  • slog正式版来了:Go日志记录新选择!
  • 华为静态路由配置实验(超详细讲解+详细命令行)
  • axios源码学习
  • 【SpingBoot】详细介绍SpringBoot项目中前端请求到数据库再返回前端的完整数据流转,并用代码实现
  • kubesphere devops使用
  • Selenium如何用于编写自动化测试脚本?
  • linux入门到精通-第二章-常用命令和工具
  • C语言初阶测评题:测试你的基础知识和编程技能!!
  • 使用HTTPS模式建立高效爬虫IP服务器详细步骤
  • 每日一题 230二叉搜索树中第K小的元素(中序遍历)
  • 文件包含漏洞及漏洞复现
  • Android 手游聚合SDK小知识(一)
  • 桂理理工大题
  • Jmeter接口测试+压力测试
  • mysql‘逻辑删除‘和‘唯一索引‘冲突的解决方案
  • MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
  • gRPC-Gateway 快速实战
  • 〔019〕Stable Diffusion 之 单图中绘制多人分区域写提示词 篇
  • Scala入门,idea关联Scala