Java中的过滤器(Filter)

java过滤器(Filter) filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器)既可以对请求进行拦截,也可以对响应进行处理。权限检查,日记操作、拦截请求、过滤操作、对请求字符设置编码。要想介绍filter,就必须介绍Filter中的三个方法。/*** web应用启动时,web服务器将创建Filter的实例对象,并调用init方法,读取web.xml的配置,完成对象的初始化功能, 阅读详情

一、什么是过滤器(Filter)

   过滤器是对Servlet容器调用Servlet的过程进行拦截过滤,从而在Servlet进行相应处理的前后实现一些特殊功能。

   Filter程序是一个现实Filter接口的java类,由Servlet容器进行调用和执行。Filter程序需要在web.xml文件中进行注册和设置他所连接的资源。

二、过滤器的工作原理

   当在web.xml中注册一个Filter来对某个Servlet程序进行拦截处理时,这个Filter就会成为Servlet容器与Servlet程序直接的一道关卡,该Filter可以对Servlet容器的请求和Servlet程序送回给Servlet容器响应进行拦截,可以决定是否将请求继续传递给Servlet程序,以及对请求和响应信息是否进行修改。

三、应用(使用web.xml配置方式)

@WebServlet("/oneServlet")
public class OneServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("2.OneServlet开始执行...");
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write("one Servlet");
		System.out.println("3.one servlet执行完毕...");
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
public class OneFilter implements Filter{
    /**
    *构造器
    */
	public OneFilter() {
		System.out.println("constructor");
	}
	
	/**
	 * 初始化方法
	 */
	@Override
	public void init(FilterConfig config) throws ServletException {
		System.out.println("init");
		String encoding = config.getInitParameter("encoding");
		System.out.println("filter中配置的编码格式:"+encoding);
	}
	
    /**
	 * 执行过滤
	 */
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		
		System.out.println("1.OneFilter开始过滤");
		//放行
		chain.doFilter(request, response);
		response.getWriter().write("hello");
		System.out.println("4.OneFilter过滤完毕");
	}
	
	/**
	 * 销毁
	 */
	@Override
	public void destroy() {
		System.out.println("destroy");
		
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>006Fliter</display-name>
    
<!--配置过滤器-->
  <filter>
    <filter-name>oneFilter</filter-name>
    <filter-class>com.szy.filter.OneFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>oneFilter</filter-name>
    <url-pattern>/oneServlet</url-pattern>
  </filter-mapping>

</web-app>

三、应用(使用注解配置方式)

@WebFilter("/oneServlet")  //拦截的Servlet
public class ThreeFilter implements Filter {

    public ThreeFilter() {
    	
    }

    public void init(FilterConfig fConfig) throws ServletException {
	
    }
	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		System.out.println("ThreeFilter");
		chain.doFilter(request, response);
	}
	
	public void destroy() {
	
	}
}

四、典型案例:使用过滤器修改请求响应的编码

public class EncodingFilterFilter implements Filter {
	String encoding = null;
    public EncodingFilterFilter() {
    	
    }

    public void init(FilterConfig fConfig) throws ServletException {
    	encoding = fConfig.getInitParameter("encoding");
    }
	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		//设置编码格式
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		req.setCharacterEncoding(encoding);
		res.setCharacterEncoding(encoding);
		chain.doFilter(req, res);
	}
	
	public void destroy() {
	
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>006Fliter</display-name>

  <!-- 设置编码格式 -->
  <!-- EncodingFilter -->
  <filter>
  	<filter-name>EncodingFilter</filter-name>
  	<filter-class>com.szy.filter.EncodingFilterFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>EncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

 

Java过滤器Filter 过滤器 一、 简介 过滤器一般用于设置字符编码、登录验证、权限验证、敏感词过滤等,减少了代码的冗余,便于代码的复用,但是不一定是每个servlet都必须使用过滤器的。 二、 过滤器的工作流程 图片来源于:https://www.cnblogs.com/ygj0930/p/6374212.html 在浏览器发送请求到服务器过程中,进行过滤,过滤器在请求进入servlet、jsp、action、等资... 阅读详情

相关推荐

基于STM32的便携式心率血氧监测系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了便携式心率血氧监测系统的全功能开发,覆盖MAX30102光电传感器驱动、PPG信号处理、心率血氧解算算法、人机交互、数据存储、报警保护、低功耗管理等核心功能,全程采用无跳步保姆式教学,从硬件选型、接线、CubeMX配置、代码开发、调试优化全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 767

Java中的过滤器Filter

一:Filter简介 二:关于Filter (一)如何使用Filter进行过滤 (二)过滤器链 (FilterChain) (三)Filter的配置 1.通过web.xml文件配置 2.通过注解配置 (四)Filter的生命周期 (五)中文乱码过滤器 三:测试案例 1.单个过滤器 2.多个过滤器

m0_68988603的博客 1万+

ZedBoard+Vivado(二)——PS + PL实现流水灯

硬件:Zedboard 软件:Vivado2018.2 + Win10 本文参考了http://blog.chinaaet.com/cuter521/p/35978的设计 1 设计 功能:PS + PL流水灯 语言:C 流程:创建工程-&amp;gt;IP Integrator-&amp;gt;综合、实现、生成Bitstream-&amp;gt;SDK 2 流程 2.1 创建工程 跟上一篇步骤完全相同,这里不用添加源文...

q416524389的博客 3695

深入理解Java中的过滤器(Filter)

过滤器是Java Web应用中强大而灵活的组件,它通过拦截请求和响应,实现了许多关键的功能,包括身份验证、日志记录、数据压缩等。通过深入理解过滤器的生命周期、配置和应用场景,我们能够更好地使用过滤器来构建健壮的Web应用。如果您有任何问题或疑问,请随时在下方评论区留言,我将竭诚为您解答。

程序猿小样的博客 1408

爬取二手房数据:Python爬虫+Geopy实战,看透房价与地理位置的隐藏关系

哪些区域单价虚高(房源少但单价远高于周边);哪些小区性价比高(靠近地铁/学校,单价低于同地段平均水平);房价与地理位置的量化关系(如距离地铁每远1公里,单价下降多少)。如果想扩展分析范围,可爬取多个城市/区域的数据,对比不同城市的房价差异;或结合时间维度(定期爬取),分析房价的涨跌趋势。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 948

CentOS 7 常用命令大全

CentOS中Linux命令

m0_63075763的博客 2018

Java过滤器Filter讲解(Java基础)

Java过滤器Filter讲解

一只苟延残喘的卑微蝼蚁 2969

【Stata双重差分模型】双重差分DID的具体操作步骤

本案例将详细阐述如何使用双重差分法进行实证分析,并展示具体的STATA操作代码。

a519573917的博客 2万+

JavaWeb经典_15_Filter 过滤器

对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个ThreadLocal 对象实例。它可以给当前线程关联一个数据(可以是普通变量,可以是对象,也可以是数组,集合)方法中,随机生成一个变量(线程要关联的数据),然后以当前线程名为。过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在!的作用,它可以解决多线程的数据安全问题。标签配置,服务器出错之后,自动跳转的页面。标签配置,服务器出错之后,自动跳转的页面。,说明 之前使用过连接,操作过数据库。中否包含有用户登录的信息即可!

qq_52922453的博客 1498

开源大模型“去审查化”技术解析:从LLaMA架构到本地部署与伦理边界

大型语言模型(LLM)基于Transformer架构,通过海量数据训练获得理解和生成自然语言的能力。其核心原理在于自注意力机制对上下文关系的建模。为了确保输出内容的安全与合规,主流模型普遍采用基于人类反馈的强化学习(RLHF)等技术进行安全对齐。这一过程旨在使模型行为符合人类价值观,是AI伦理工程实践的关键环节。然而,在特定研究场景下,如对抗性测试或内容安全算法研究,技术人员需要模拟极端对话以评估系统鲁棒性,这催生了针对“去对齐”或“移除护栏”的技术探索。此类技术通常通过对预训练模型进行反向微调或继续训练来

weixin_33743880的博客 588

YOLO26改进105:全网首发--使用BiFPN改进特征金字塔网络

YOLOv6 v3.0在目标检测领域实现重大突破,通过改进网络架构和训练方案显著提升性能。该版本在COCO数据集上展现出优越表现:YOLOv6-N达到37.5% AP/1187 FPS,YOLOv6-S实现45.0% AP/484 FPS,均超越同类检测器。大模型YOLOv6-M/L分别达到50.0%/52.8% AP,L6版本更创下实时检测新纪录。关键技术包括RepVGGBlock、BiFusion等新型模块,通过多分支融合和高效重参数化设计提升性能。研究团队已验证各改进模块有效性,代码已开源。

AIcurator的博客 95

java中的过滤器 Filter

Filter的三个方法:void init(FilterConfig):在Tomcat启动时被调用;void destroy():在Tomcat关闭时被调用;void doFilter(ServletRequest,ServletResponse,FilterChain):每次有请求时都调用该方法;FilterConfig类:与ServletConfig相似,用来获取Filter的初始化参数。

qq_63964907的博客 2195

【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘

本篇主要讲解如何使用vnpy进行实盘交易,由于上一节我们已经学习了模拟盘运行,如果一切顺利的话,只需要通过穿透测试,就可以正式部署实盘了。

魔落的博客 4231

Java Filter 过滤器详解

本文深入讲解Servlet过滤器的核心概念与工作流程,通过代码示例演示统一编码、权限控制等典型应用场景,分析过滤器链与责任链模式的关联,对比Filter与Servlet生命周期差异,并提供Spring集成方案,帮助开发者掌握这一Java Web核心组件的使用技巧与最佳实践。

m0_73941339的博客 3203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java 过滤器Filter详解

核心作用:过滤器是处理全局请求/响应逻辑的通用工具。关键接口init()doFilter()destroy()。常见场景:编码处理、日志记录、权限控制、跨域处理等。配置方式:XML 配置(兼容性强)或注解配置(简洁高效)。高级特性:过滤链、异步支持、动态注册。通过合理使用过滤器,可以有效解耦通用逻辑与业务代码,提升 Web 应用的可维护性和扩展性。

m0_65181864的博客 2295

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java filter过滤器_Java中的Filter过滤器

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

weixin_42522575的博客 240

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java filter 不过滤器_Java中的Filter过滤器

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

weixin_36131782的博客 817

JAVA WEB中Filter过滤器的介绍

文章目录作用代码示例过滤器配置、生命周期等问题 作用 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤 代码示例 *创建一个java class实现Filter接口,复写接口的三个方法 *配置拦截路径,两种方法:注解和web.xml @WebFilter("/*")//拦截路径设置为/*,意思是访问所有资源之前,都会执行该过滤器 public class FilterDe...

qq_42487559的博客 228

Java Web过滤器(Filter)

过滤器(Filter) 过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理 通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理 大概流程图如下 应用场景 自动登录 统一设置编码格式 访问权限控制 敏感字符过滤等 创建Filter 在Servlet中我们一般都会对request和response中的字符集编码进行配置,如果Servlet过多字符集编码发生变化时修改起码会很麻烦,这些通用的字符集编码配置等工作我们可以放到F

m0_68006260的博客 5674

Java体系知识之过滤器Filter

Java体系知识之过滤器Filter 1 技术简介 2 过滤器使用步骤(重点) 2.1 使用步骤 2.2 案例 3 过滤器执行过程(重点) 3.1 内容概述 3.2 案例 4 过滤器生命周期 4.1

qq_45464872的博客 1004

Java -- Filter(过滤器)

浏览器以post提交请求数据到任何Servlet,每个servlet都要处理post提交中文乱码问题,这样处理会导致冗余。所以可以将处理post乱码的代码放到过滤器中,这样所有请求再达到servlet之前就已经处理完成乱码,达到代码优化,统一处理乱码简洁。 2.1.统一解决post提交请求乱码应用 2.1.统一解决post提交请求乱码应用 2.2.过滤论坛中用户发表内容中的非法字符 2.3.登录权...

来日可期的博客 688

java中的Filter过滤器

过滤器,顾名思义,就是横亘在用户层和服务层之间的中间人。可以用来拿到通信的内容,通常是用户的请求和响应,并且可以做修改。 要添加一个过滤器,需要三步。 实现过滤器的接口。 在web.xml中注册。 在web.xml中说明过滤的url映射 public class FilterTest implements Filter{ public void destroy() { ...

yrk0556的博客 200

Java-Web三大件之过滤器Filter

Java-Web三大件之过滤器Filter 参考文章:https://blog.youkuaiyun.com/m0_51545690/article/details/123677340?spm=1001.2014.3001.5502 一丶本质: Filter 过滤器它是 JavaEE 的规范。也就是接口,是用于特定用途的servlet,作用是拦截请求响应对象 二丶功能: ​ ●访问特定资源时的身份认证 ​ ●访问资源的记录跟踪 ​ ●访问资源的转换,如格式转换等 三丶过滤器的应用场景: 四丶过滤器API: 五

鸡翘少女不会受伤的博客 1128

java过滤器Filter

一、简介 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应 (Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、...

yjclsx的博客 42万+
上一篇: Java中的jsp以及EL表达式、Jstl标签
下一篇: Java中的监听器(Listener)
Love_codes
博客等级 码龄8年 16粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值