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

javaweb-Filter

Filter过滤器

      Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能,统一字符集编码。

      它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
在这里插入图片描述
如何借助Filter实现拦截功能?

            Servlet API提供了一个Filter接口,编写的过滤器必须实现该接口。Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到过滤的目的.
Filter开发两步走
①编写java类实现java.servlet.Filter接口,并实现其doFilter方法。

public class DemoFilter implements Filter{@Overridepublic void destroy() {System.out.println("destroy");}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)throws IOException, ServletException {System.out.println("doFilter");}@Overridepublic void init(FilterConfig config) throws ServletException {System.out.println("init");}}

②在web.xml文件中对编写的filter类进行注册,并设置它所能拦截的资源。

  </welcome-file-list><!-- 配置Servlet,但现在我不在这里配,可以用注解的方式在控制类中配 --><!-- 配置过滤器, --><filter><filter-name>DemoFilter</filter-name><filter-class>cn.xsw.mvcproject.filter.DemoFilter</filter-class></filter><filter-mapping><filter-name>DemoFilter</filter-name><url-pattern>/*</url-pattern>   <!--拦截项目的所有资源--><dispatcher>REQUEST</dispatcher>  <!-- 指定拦截的请求,默认request,还有- FORWARD- INCLUDE- ASYNC- ERROR --></filter-mapping>
</web-app>

测试:因为过滤(拦截)了所有资源,所以我启动服务器,打开登录页面(或其它页面)都显示空白,说明拦截了
      每刷新一下网页,或打开另一个网页,就会输出一次doFilter,说明该方法会执行n多次,拦截功能是由doFilter()方法来做。
在这里插入图片描述

放行拦截的所有资源

	@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)throws IOException, ServletException {chain.doFilter(req, resp);}

在这里插入图片描述

http://www.xdnf.cn/news/4374.html

相关文章:

  • 黄金量化:高频实时的贵金属API
  • Python实现NOA星雀优化算法优化Catboost回归模型项目实战
  • 京东(JD)API 商品详情数据接口讲解及 JSON 示例
  • el-row el-col
  • 【基于SSM+Vue+Mysql】健身房俱乐部管理系统(附源码+数据库脚本)
  • 大模型系列(三)--- GPT1论文研读
  • ETL交通行业案例丨某大型铁路运输集团ETL数据集成实践
  • shell-流程控制-循环-函数
  • Spring Boot操作MongoDB的完整示例大全
  • 4.29 tag的完整实现和登录页面的初步搭建
  • 【Pandas】pandas DataFrame agg
  • 优化算法 - intro
  • window 显示驱动开发-线程和同步级别为零级
  • Git仓库基本操作
  • Spark 的 Shuffle 机制:原理与源码详解
  • 内网im软件,支持企业云盘的协同办公软件推荐
  • 【ES】Elasticsearch字段映射冲突问题分析与解决
  • JAVA设计模式——(十二)原型模式(Prototype Pattern)
  • [ linux-系统 ] 常见指令2
  • 二、Hadoop狭义和广义的理解
  • STM32教程:串口USART通讯协议原理及分析(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • AI Agent 入门指南:从 LLM 到智能体
  • 【能力比对】数据质量管理VS数据质量平台
  • python打卡day17
  • 并发设计模式实战系列(16):屏障(Barrier)
  • BIO(Blocking I/O)、NIO(Non-blocking I/O)和 AIO(Asynchronous I/O)
  • Super-vlan
  • 【上位机——MFC】绘图
  • 智能车载台如何成为工业4.0的智慧中枢?解码AORO V80技术革新
  • 某团小程序mtgsig,_token 生成逻辑分析