过滤器的创建和执行顺序

news2024/9/29 5:31:43

过滤器的创建和执行顺序

8.1.1创建并配置过滤器

P143 重点是如何创建并配置(xml)

1.创建

public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            servletRequest.setCharacterEncoding("UTF-8");
            servletResponse.setCharacterEncoding("UTF-8");
            filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

2.配置

  • 注解方式:所有路径不能是多个*,可以配置多个过滤路径
  • xml方式

3.注解方式

@WebFilter("/*")
@WebFilter(filterName = "myFilter",urlPatterns = {"/*"})

4.xml方式

<filter>
    <filter-name>hellohello</filter-name>
    <filter-class>demo.HelloServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>hellohello</filter-name>
    <url-pattern>/hellohello</url-pattern>
</filter-mapping>
<!--    可以配置多个路径-->
    <filter-mapping>
        <filter-name>hellohello</filter-name>
        <url-pattern>/hellohello2</url-pattern>
    </filter-mapping>

5.基于xml的案例

public class HelloServlet 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("我是过滤器");
    }

    @Override
    public void destroy() {

    }
}

8.1.2 执行过滤器的详细过程

图1 Filter执行过程图2

8.1.3过滤器执行顺序

过滤器链的执行顺序

  • 先在web.xml中查找过滤器执行

在web.xml中,则按照配置的<filter-mapping>顺序执行

  • 再在注解的过滤中中选择执行:就是按照包名类名等的顺序执行

@WebFilter 按字母序执行

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程间通信:信号量(一)

前提知识 在介绍信号量之前&#xff0c;先来看看一些概念和一些简单的前提知识&#xff1a; 进程间通信的前提是让不同的进程看到同一份资源。于是&#xff0c;就有提出让这种资源成为一种公共资源的方法&#xff0c;方法的提出&#xff0c;导致了一种新的问题的出现&#xf…

MyBatis源码分析(二)SqlSessionFactory的构建及配置文件读取过程

文章目录一、MyBatis配置文件二、SqlSessionFactory的获取1、初始化XML配置的Document以及其他对象2、解析配置文件&#xff08;1&#xff09;配置Environment&#xff08;2&#xff09;存放Mapper&#xff08;3&#xff09;解析Mapper3、构造SqlSessionFactory4、总结未完待续…

测试2年,当初一起入行的朋友很多月薪20k了,自己却还没过万,到底差在了哪里?

说来奇怪&#xff0c;不管是读书还是工作&#xff0c;都存在一个现象&#xff0c;那就是人比人&#xff0c;比死人。读书的时候&#xff0c;不管是老师还是家长口中&#xff0c;总会有一个“别人家的孩子”。同样&#xff0c;到工作中&#xff0c;领导口中总会有一个“别人的员…

Doxygen 详细使用

doxygen的安装和基本使用可参考&#xff1a;Doxygen的安装和基本使用常用选项doxygen的所有选项的参考文档&#xff1a;doxygen官网文档2、样式说明doxygen可以自己自定义样式。手写 .css文件 &#xff08;可以查看doxygen的源码&#xff0c;进行相对应修改&#xff09;在Exper…

推荐一个.Net Core开发的蜘蛛爬虫开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 如果我们需要抓取网络上的数据&#xff0c;这时候我们就要写爬虫&#xff0c;这里面就涉及到网页的抓取、以及网页分析与数据提取、抓取的性能等知识&#xff0c;今天就给大家推荐一个开源项目&#xff0c;它可以…

java基础复习(练习写博客)

文章目录Java特性和优势java三大版本JDK、JRE、JVM(从前到后包含)Java开发环境搭建步骤Java程序运行机制IDEJava基础语法一、注释、标识符、关键字二、数据类型&#xff08;shift双击问题&#xff09;三、变量、常量、作用域四、运算符五、包机制、JavaDocJava进阶语法一、Scan…

【Java】代码中的安全漏洞解决合集(更新中)

汝之观览&#xff0c;吾之幸也&#xff01;本文主要讲解Java的一些安全漏洞&#xff0c;并且给出浅知的解决方案。 具体国内的风险可查看网址工业和信息化部网络安全威胁和漏洞信息共享平台 1、Spring Framework反射型文件下载漏洞&#xff08;CVE-2020-5421&#xff09; 漏洞…

Linux 进程:fork()与vfork()的对比

目录一、fork函数二、vfork函数1.函数的原理2.函数的隐患3.解决函数隐患的方法在Linux的进程学习中&#xff0c;常使用fork函数来创建子进程&#xff0c;但其实还有一个vfork函数也可以创建子进程。但是这两个函数的实现机制不同&#xff0c;fork函数使用了写实拷贝技术&#x…

Ubuntu 20搭建srs3.0

SRS官网&#xff0c;v3Home介绍&#xff0c;部署帮助。 1.创建一个srs项目文件夹 2.进入后用git命令拉取3.0release版本&#xff1a;git clone -b 3.0release https://gitee.com/ossrs/srs.git 3.进入srs/trunk目录打开终端输入命令&#xff1a;./configure 4.继续输入命令&a…

Python+tkinter添加滚动条

大家好&#xff0c;我是IKUN的真爱粉&#xff0c;有时候我们需要在tkinter上加滚动条&#xff0c;那么怎么制作呢&#xff0c;我们先看下面的视频展示效果&#xff0c;是不是你想要的 展示 感觉制作的略微粗糙&#xff0c;各位可以后期自己慢慢调整 创建滚动条重要的步骤是&a…

【C++进阶】四、STL---set和map的介绍和使用

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set的介绍及使用 4.1 set的介绍 4.2 set的使用 五、multiset的介绍及使用 六、map的介绍和使用 6.1 map的介绍 6.2 map的使用 七、multimap的介绍和使用 一、关联式容器 前面已经接触过 STL 中的部分…

SAP 详解ST02

问&#xff1a;在st02中看到&#xff0c;Program和Export/Import的Swap出现红的了&#xff0c;这个是什么原因啊&#xff0c;是不是对系统的性能有影响啊&#xff0c;是否应该调整一些参数啊。要怎么调整呢&#xff1f; 复1&#xff1a;双击红色的部分就可以看到相应的参数修改…

【2023/图对比/无负样本】基于无负样本损失和自适应增强的图对比学习

如果觉得我的分享有一定帮助&#xff0c;欢迎关注我的微信公众号 “码农的科研笔记”&#xff0c;了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【2023/图对比/无负样本】基于无负样本损失和自适应增强的图对比学习 周天琪,杨艳,张继杰等.基于无负样本损失和自适应…

CCNP350-401学习笔记(601-650题)

601、What is a characteristic of Cisco StackWise technology? A. It supports devices that are geographically separated. B. It is supported on the Cisco 4500 series. C. It combines exactly two devices.D. It uses proprietary cabling 602、Refer to the exhibi…

低代码开发平台真的靠谱吗?

低代码开发平台真的靠谱吗&#xff1f;这么跟你说吧&#xff1a; 你想用美图秀秀实现PS的修图效果但失败了&#xff0c;转头就说美图秀秀垃圾&#xff0c;是不是无理取闹你想用剪映实现PR的视频剪辑效果但失败了&#xff0c;转头就说剪映啥也不是&#xff0c;是不是在无理取闹…

操作指南:如何高效使用Facebook Messenger销售(一)

在销售方面&#xff0c; Facebook Messenger 是许多各种规模的企业的首选渠道。这篇文章将向您介绍使用 Messenger 作为销售渠道。我们还将指导您完成用智能客服工具SaleSmartly(ss客服)将您的 Facebook Messenger 销售更上一层楼。配图来源&#xff1a;SaleSmartly&#xff08…

JS#2 对象

一. Array对象定义var 变量名 new Array(元素列表);var 变量名 [元素列表];访问arr[索引] 值;注意JS数组类似于Java的集合, 长度, 类型都可变常用的属性和方法属性: length 数组元素的个数方法: push( ) 添加元素splice( ) 删除元素代码: <!DOCTYPE html> <html la…

day55-day56【代码随想录】二刷数组

文章目录前言一、字符串的排列&#xff08;力扣567&#xff09;【滑动窗口】二、找到字符串中所有字母异位词&#xff08;力扣438&#xff09;【滑动窗口】三、串联所有单词的子串&#xff08;力扣30&#xff09;【滑动窗口】****【hard】每日一题day55&#xff1a;合并相似的物…

面试题HTML篇(一)

目录 一、meta 标签可以做什么 四、行内元素、块级元素、空元素 元素之间的转换问题&#xff1a; 五、px,em,rem,vw,vh,rpx等单位的特性 六、替换元素和非替换元素 七、first-of-type和first-child有什么区别 八、doctype标签的作用 九、link标签和import标签的区别 十…

import “cv2“ could not be resolved pylance(reportMissingImports)

openCV系列文章目录 文章目录openCV系列文章目录前言一、错误原因二、解决方法1.在vscode&#xff1a;Python:Select Interpreter2.依然报错&#xff1a;cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:U…