Filter(过滤器),快速入门、修改模板、执行过程、过滤器链

过滤器(filter) 例子源码 博文链接:https://huicn.iteye.com/blog/155923 立即下载

一、概念

Filter 是依赖于 Servlet 容器,Filter接口就在 Servlet 包下面,属于 Servlet 规范的一部分。所以,很多时候我们也称其为“增强版 Servlet”。
在这里插入图片描述

过滤器的作用: 一般用于完成通用的操作。如:登录验证(就是只有登录了才给你看到一些重要的页面,没登录就不给你看,通过Filter完成)、统一编码处理、敏感字符过滤

过滤器给你这个请求通过的话,你就可以访问那个资源,不给你通过你就访问不了,可以在过滤器里面的类写给放不放行。(放行:filterChain.doFilter(servletRequest,servletResponse);)

二、快速入门

快速入门:
步骤:

  1. 定义一个类(普通java class就行),实现接口Filter(是javax.servlet.Filter包;)
  2. 复写方法
  3. 配置拦截路径
    . web.xml
    . 注解(用的比较多)(若不加注解也不加xml则这个不是过滤器了)

新建一个module,tomcat配置就不说,虚拟路径为bbb。

FilterDemo1 写:

package cn.itcast.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author QLBF
 * @version 1.0
 * @date 2020/12/1 15:50
 */

@WebFilter("/index.jsp")//只有访问index.jsp才会被拦截
public class FilterDemo1 implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo1执行了");

        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  index.jsp请求
  </body>
</html>

如果设置为://@WebFilter("/*")//访问所有资源(浏览器访问htmi,jsp,servlet…)之前,都会执行该过滤器
在这里插入图片描述
这里只有加filterChain.doFilter(servletRequest,servletResponse);,浏览器访问index.jsp才会在浏览器显示index.jsp请求,否者不会再浏览器显示的

在这里插入图片描述

三、修改模板

在这里插入图片描述
然后直接新建一个Filter():
在这里插入图片描述
自动实现那个接口了,还加了个放行:
在这里插入图片描述

执行流程:

  1. 执行过滤器
  2. 执行放行后的资源
  3. 回来执行过滤器放行代码下边的代码
package cn.itcast.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author QLBF
 * @version 1.0
 * @date 2020/12/1 19:28
 */
@WebFilter("/*")
public class FilterDemo2 implements Filter {
    public void destroy() {
        System.out.println("destroy...");
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("FilterDemo2执行了。。。");
        //放行
        chain.doFilter(req, resp);
        System.out.println("FilterDemo2回来了。。。");
    }

    public void init(FilterConfig config) throws ServletException {
        System.out.println("init...");
    }

}

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  index.jsp请求
  <%
    System.out.println("index...");
  %>
  </body>
</html>

浏览器访问jsp后:
在这里插入图片描述
(bbb是虚拟目录)
在这里插入图片描述

四、过滤器链(就是配置多个过滤器的问题)在这里插入图片描述

  • 执行顺序:如果有两个过滤器:过滤器1和过滤器2
  1. 过滤器1
  2. 过滤器2
  3. 资源执行
  4. 过滤器2
  5. 过滤器1
  • 过滤器先后顺序问题:
  1. 注解配置:按照**类名(而不是注解的)**的字符串比较规则比较,值小的先执行
    • 如: AFilter 和 BFilter,AFilter就先执行了。(就是上面为什么过滤器1比过滤器二先执行,看类名,)
  2. web.xml配置: 谁定义在上边,谁先执行

自己创建两个Filter在doFilter写两句话,放行后也写句代码,浏览器访问统一效果,看它们的输出情况。(这里不放代码了,类的字符串值小的先执行,从第一个开始比,比到就暂停)

对族实例进行任意的矩阵变换,需要什么样的族? 问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件 阅读详情

相关推荐

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 333

Filter介绍及常用滤镜总结

常用滤镜总结: 基本语法: style="filter:filterName(filterParam01, filterParam02,...)" { filterName:滤镜名称 filterParam01,filterParam02:滤镜参数 } 滤镜说明: Alpha:设置透明层次 blur:创建高速度移动效果,即模糊效果 Chroma:制作专用颜色透明 DropShadow:创建对

Benjamin——前端攻城师 1657

TPAMI 2025新作LRFormer复现笔记:我的Windows 11 + RTX 4090配置全流程

本文详细记录了在Windows 11系统下使用RTX 4090显卡复现TPAMI 2025顶会论文LRTransformer的完整流程,包括硬件配置、系统优化、Python环境搭建及模型训练中的常见问题解决方案。特别针对Windows平台特有的路径管理、CUDA版本冲突和显存优化等关键技术细节提供了实用指南,帮助开发者高效完成环境搭建和模型训练。

weixin_29094301的博客 411

过滤器(Filter)

判断用户是否登录的代码是固定的,并且在每一个Servlet类当中都需要编写,如果这样显然代码没有得到重复利用。因为Filter的调用顺序是配置到web.xml文件中的,只要修改web.xml配置文件中filter-mapping的顺序就可以调整Filter的执行顺序。执行下一个过滤器,如果下面没有过滤器了,执行(与请求路径对应的)Servlet。Servlet对象默认情况下,在服务器启动的时候是不会新建对象的。Servlet是单例的。注意:Filter的优先级,天生的就比Servlet优先级高。

heliuerya的博客 483

开关电源的纹波和噪声电压-抑制方法

开关电源(包括AC/DC转换器、DC/DC转换器、AC/DC模块和DC/DC模块)与线性电源相比较,最突出的优点是转换效率高,一般可达80%~85%,高的可达90%~97%;其次,开关电源采用高频变压器替代了笨重的工频变压器,不仅重量减轻,体积也减小了,因此应用范围越来越广。 但开关电源的缺点是由于其开关管工作于高频开关状态,输出的纹波和噪声电压较大,一般为输出电压的1%左右(低的为输出电压的0.5%左右),最好产品的纹波和噪声电压也有几十mV;而线性电源的调整管工作于线性状态,无纹波电压,输出的噪声电压也

ltqdxl的博客 1万+

Flow Matching实战:5步搞定图像生成模型优化(附PyTorch代码)

本文提供了一份基于Flow Matching框架优化图像生成模型的实战指南。通过五个关键步骤,详细讲解了从环境配置、核心概念梳理到构建向量场网络、设计损失函数、编写训练循环以及选择ODE求解器进行采样的完整流程,并附有可运行的PyTorch代码,帮助开发者快速掌握这一高效的生成式建模技术。

weixin_29065959的博客 319

常用的filter 文件大小改成G M KB B 毫秒数变成 自定义的 年月日时间

//毫秒数变成 自定义的 年月日时间 const formatData = (val) =&gt; { let date = new Date(val); let dateTime = date.toLocaleString(); return dateTime; }; // 重写方法,自定义格式化日期 Date.prototype.toLocaleString =...

Embrace924的博客 399

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

Jet4505的博客 6819

Filter(过滤器)之字符替换和编码设置

顾名思义,Filer的作用就是过滤,主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链.适用Filter完整的流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并响应,最后Filter再对服务器响应进行处理.filter有以下几个种类:1.用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请...

LPLIFE的博客 3149

非技术面试题精选大全

回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业喜欢有礼貌的求职者。

吃面爱放香菜的博客 434

激光器安规详细解读 - 一级 - 并以940波长为例

前言: 作为人工智能的重要解决方案,激光作为不可或缺的一个选项。但是,激光的安规问题始终是要得到关注。尤其是3D识别技术在人脸上的使用的时候,如何判读激光器的安全使用规范,变得非常重要。本文,尝试从欧洲激光标准IEC 60825-1:2014,以及国家激光产品规则标准GB 7247.1,抛砖引玉,写出自己的理解。 本节,主要讨论,人脸识别需要符合的安全等级1: 1 激光标准的分类 激光国际...

山云的专栏 5036

Filter概述、执行流程、拦截路径配置及过滤器链

Filter概述、执行流程、拦截路径配置及过滤器链示例

m0_61961937的博客 1401

《Claude Code 实战》第 1 章:开启智能编程新纪元——初识 Claude Code

简单来说,Claude Code 是 Anthropic 公司推出的一款基于 Claude 3.7 Sonnet 等大语言模型的强大编程工具。但与传统的 ChatGPT 或普通的聊天机器人不同,Claude Code 具备了"动手"的能力。它不仅会"说",更会"做"。想象一下,你不再需要描述复杂的命令行参数,也不需要为了修改一个配置文件而频繁切换编辑器。Claude Code 可以直接读取你项目中的文件、理解复杂的代码库结构、执行终端命令,并直接为你生成或修改代码。

AI天才研究院 243

javaWeb--Listener和Filter

Filter:过滤器 1. 概念: 生活中的过滤器:净水器,空气净化器,土匪、 web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器的作用: * 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤… 2. 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径(访问什么样的资源拦截会生效) web.xml 注...

qq_40955824的博客 235

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring Cloud Gateway过滤器体系详解:GatewayFilter核心机制与源码拆解

在微服务架构中,网关是流量控制与请求转发的核心枢纽,而过滤器链则是网关实现鉴权、限流、灰度等能力的底层机制。Spring Cloud Gateway基于WebFlux响应式模型,通过GatewayFilter、GatewayFilterFactory与GlobalFilter三类组件协同工作,构成可扩展的过滤链路。开发者常困惑于配置文件中的短名与工厂类的对应关系,以及过滤器执行顺序的确定规则。理解过滤器装配原理,掌握从YAML配置到执行链条的完整流程,不仅能解决响应头重复、路由重试异常等线上问题,更能为自定

weixin_33831196的博客 454

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Nunjucks 模板语言完全指南:变量、继承、标签、过滤器与表达式实战

> 本篇技术指南以 Nunjucks 官方文档 [docs/cn/templating.md](https://link.gitcode.com/i/7ee2611795850fadd779ded96e952860) 为核心骨架,逐项讲解模板语法:变量读取、过滤器管道、模板继承、全部内置标签(`if`、`for`、`macro`、`set`、`include`、`import`、`raw`、`fi

gitblog_01075的博客 1023

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

新手必看:Let‘s Block It过滤器模板完全解析,5分钟提升浏览体验

Let's Block It是一款社区维护的uBlock Origin过滤器集合,能够帮助用户移除低质量内容和无用干扰,专注于重要信息。通过简单的设置,任何人都能快速提升网络浏览体验,告别广告、抄袭内容和其他令人分心的元素。 ## 为什么选择Let's Block It过滤器? 在信息爆炸的时代,我们每天都要面对大量低质量内容。Let's Block It提供了一种简单而有效的解决方案,其核心

gitblog_00767的博客 961

零基础学习Vue过滤器:从入门到实战

Vue过滤器主要用于对数据进行格式化处理,比如文本转换、日期格式化等。它的最大特点是可以在模板中直接使用,不需要修改原始数据。过滤器不会改变原始数据,只是在显示时进行临时转换可以用在双花括号插值和v-bind表达式中支持链式调用,多个过滤器可以依次处理数据。

RubyLion28的博客 382

JavaWeb——Filter and Listener

JavaWeb三大组件:Servlet、Filter、Listener 1.Filter(过滤器) 1.1.概念 Web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截,完成一些特殊的功能 1.2.过滤器的作用 一般用于完成通用的操作,如登陆验证、统一编码处理、敏感字符过滤等 1.3.过滤器快速入门 步骤: 1.定义一个类,实现接口Filter 2.覆写方法 3.配置拦截路径 ...

LiLiLiLaLa的博客 480

如何用 DesignPatternsPHP 实现高效数据处理:管道过滤器模式的完整指南

DesignPatternsPHP 是一个专注于 PHP 8.x 设计模式实现的开源项目,提供了多种经典设计模式的示例代码。其中,管道过滤器模式作为一种强大的处理数据流的架构模式,能够帮助开发者构建灵活、可扩展的系统。本文将通过项目中的实际案例,带你快速掌握这一模式的核心概念和实现方法。 ## 什么是管道过滤器模式? 管道过滤器模式(Pipeline Filter Pattern)是一种将复杂

gitblog_00575的博客 1046

Let‘s Block It项目结构深度剖析:从过滤器模板到前端资产的组织方式

Let's Block It是一个社区维护的uBlock Origin过滤器集合,旨在帮助用户移除低质量内容和无用提示,专注于重要信息。该项目采用清晰的模块化结构,将过滤器模板、前端资产和后端逻辑有机组织,确保代码可维护性和扩展性。本文将深入剖析其项目结构,从核心过滤器模板到前端资源的组织方式,帮助开发者快速理解项目架构。 ## 项目核心目录概览 Let's Block It项目采用分层架构设

gitblog_00492的博客 450

JavaWeb19.1【Filter&Listener:过滤器Filter的概念和快速入门】

1 package com.haifei.web.filter; 2 3 import javax.servlet.*; //注意Filter来自这个包下 4 import javax.servlet.annotation.WebFilter; 5 import java.io.IOException; 6 7 /** 8 * 过滤器快速入门 9 * 10 ...

yubaby 134

Netcap扩展开发指南:编写自定义过滤器与Action模块的最佳实践

Netcap是一款强大的网络分析工具,支持通过扩展模块实现自定义功能。本文将详细介绍如何为Netcap开发自定义过滤器与Action模块,帮助开发者快速扩展工具功能,满足特定网络分析需求。 ## 扩展模块基础:过滤器与Action的核心作用 Netcap的扩展系统主要包含两类模块:**过滤器(Filter)** 和**动作(Action)**。过滤器用于筛选网络数据包,决定哪些流量需要被处理;

gitblog_00458的博客 812

『 C++ - STL 』位图(BitMap)与布隆过滤器(Bloom Filter)

腾讯曾经有一道面试题是这样的: 存在40亿个不重复的无符号整数,其中这些数据并未排过序;给定一个无符号整数,如何快速判断这个数是否存在于这40亿个数中; 很显然,这个面试题问的是一个数据在不在的问题; 那么如何能够对数据进行判断在不在的问题? 遍历数据逐个判断 遍历数据逐个判断可以理解为一种暴力的解法,这种暴力的解法通过枚举的思路对数据逐个查询; 但实际上该方法的时间复杂度为O(N)[由于需要遍历整组数据]......;

小侯宝的博客 1802

Django 快速参考备忘清单:项目搭建、模板引擎与静态资源实战指南

本指南以 jaywcjlove/reference 仓库中的 [Django 备忘清单](https://link.gitcode.com/i/b890b6abf54b6eab77380019979c5566) 为主体,系统梳理 Django Web 框架从环境准备、项目/应用创建、视图与路由、数据库模型,到模板引擎、过滤器与静态资源加载的完整使用路径。读完本文,你将掌握一套可照抄运行的 Djan

gitblog_00356的博客 403

Dressage异步Rollout与Staleness控制:吞吐翻倍而训练不发散的2个关键机制

Dressage 是一个可扩展的 Agentic 强化学习训练框架(Scalable RL for Any Agent and Sandbox),它把策略 Rollout、沙箱工具执行与训练数据转换用共享 Proxy 和 Paddock 层串起来。本文聚焦它的两个核心能力:**异步 Rollout** 让训练与推理并行、吞吐大幅提升;**Staleness 控制**(陈旧数据过滤)则保证训练只消费

gitblog_07065的博客 511
上一篇: (总)用户信息查询案例
下一篇: Filter登录验证(权限控制)小案例
Mike-H
博客等级 码龄8年 27粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值